mongodb - 是否可以从集合中 mongodump 转储最后的 "x"记录?

您可以使用 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/

相关文章:

mongodb - Meteor.Collection.ObjectID() 与 MongoDB O

MongoDB 性能 - 拥有多个数据库

.net - MongoDB事务?

mongodb - 如何使用 docker-compose 在 mongodb 中创建用户

javascript - 使用 IntelliJ IDEA for JavaScript 的最佳插件

node.js - 在MongoDB中更新和返回文档

mongodb - $unwind 聚合框架中的对象

database - findOneAndUpdate 和 update 的 Mongoose 区别

regex - MongoDB,通过正则表达式对索引字段的查询性能

node.js - 在 Mongoose 中创建外键关系