您可以使用 mongodump 从集合中转储最新的“x”文档吗?例如,在 mongo shell 中可以执行:
db.stats.find().sort({$natural:-1}).limit(10);
mongodump 是否可以使用相同的功能?
我想解决方法是将上述文档转储到一个新的临时集合中并 mongodump 整个临时集合,但如果能够通过 mongodump 执行此操作会很棒。
提前致谢,
迈克尔
最佳答案
mongodump
没有完全公开游标接口(interface)。
但是您可以使用 --query
参数解决它。
先获取集合的文档总数
db.collection.count()
假设有 10000 个文档,而您想要最后 1000 个。 为此,请获取您要转储的第一个文档的 ID。
db.collection.find().sort({_id:1}).skip(10000 - 1000).limit(1)
在此示例中,ID 为 “50ad7bce1a3e927d690385ec”
。
现在您可以向 mongodump
提供此信息,以转储所有具有更高或相等 id 的文档。
$ mongodump -d 'your_database' -c 'your_collection' -q '{_id: {$gte: ObjectId("50ad7bce1a3e927d690385ec")}}'
更新
--limit
和 --skip
添加到 mongoexport
的新参数可能会在该工具的下一版本中提供:https://github.com/mongodb/mongo/pull/307
关于mongodb - 是否可以从集合中 mongodump 转储最后的 "x"记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828817/