本文介绍了是否可以 mongodump 最后一个“x"?集合中的记录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您可以使用 mongodump 转储集合中最新的x"文档吗?例如,在 mongo shell 中你可以执行:

Can you use mongodump to dump the latest "x" documents from a collection? For example, in the mongo shell you can execute:

db.stats.find().sort({$natural:-1}).limit(10);

mongodump 是否可以使用相同的功能?

Is this same capability available to mongodump?

我想解决方法是将上述文档转储到新的临时集合中,然后 mongodump 整个临时集合,但是能够通过 mongodump 执行此操作会很棒.

I guess the workaround would be to dump the above documents into a new temporary collection and mongodump the entire temp collection, but would be great to just be able to do this via mongodump.

提前致谢,

迈克尔

推荐答案

mongodump 没有完全公开游标接口.但是您可以使用 --query 参数来解决它.首先获取集合的文档总数

mongodump does not fully expose the cursor interfaces.But you can work around it, using the --query parameter.First get the total number of documents of the collection

db.collection.count()

假设有 10000 个文档,而您想要最后 1000 个.为此,请获取您要转储的第一个文档的 ID.

Let's say there are 10000 documents and you want the last 1000.To do so get the id of first document you want to dump.

db.collection.find().sort({_id:1}).skip(10000 - 1000).limit(1)

在这个例子中,id 是 "50ad7bce1a3e927d690385ec".现在您可以使用此信息提供 mongodump,以转储具有更高或相等 id 的所有文档.

In this example the id was "50ad7bce1a3e927d690385ec".Now you can feed mongodump with this information, to dump all documents a with higher or equal id.

$ mongodump -d 'your_database' -c 'your_collection' -q '{_id: {$gte: ObjectId("50ad7bce1a3e927d690385ec")}}'

更新新参数 --limit--skip 被添加到 mongoexport 可能会在下一版本的工具中可用:https://github.com/mongodb/mongo/pull/307

UPDATEThe new parameters --limit and --skip were added to mongoexport will be probably available in the next version of the tool: https://github.com/mongodb/mongo/pull/307

这篇关于是否可以 mongodump 最后一个“x"?集合中的记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 18:26