问题描述
您可以使用 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"?集合中的记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!