你能用mongodump从集合中转储最新的"x"文件吗?例如,在mongo shell中,您可以执行:
db.stats.find().sort({$natural:-1}).limit(10);
Run Code Online (Sandbox Code Playgroud)
mongodump可以使用相同的功能吗?
我想解决方法是将上述文档转储到一个新的临时集合中并mongodump整个临时集合,但是能够通过mongodump实现这一点非常棒.
提前致谢,
迈克尔
Mic*_*c92 44
mongodump没有完全公开游标接口.但是你可以使用--query参数解决它.首先获取集合的文档总数
db.collection.count()
Run Code Online (Sandbox Code Playgroud)
假设有10000个文档,你想要最后的1000个.这样做得到你想要转储的第一个文件的id.
db.collection.find().sort({_id:1}).skip(10000 - 1000).limit(1)
Run Code Online (Sandbox Code Playgroud)
在这个例子中,id是"50ad7bce1a3e927d690385ec".现在,您可以mongodump使用此信息提供,以转储具有更高或相同ID的所有文档.
$ mongodump -d 'your_database' -c 'your_collection' -q '{_id: {$gte: ObjectId("50ad7bce1a3e927d690385ec")}}'
Run Code Online (Sandbox Code Playgroud)
UPDATE
新的参数--limit和--skip添加到mongoexport会可能提供该工具的下一个版本:https://github.com/mongodb/mongo/pull/307
根据Mic92的答案,从集合中获取最新的1000件商品:
找到_id第1000个最新商品:
db.collection.find('', {'_id':1}).sort({_id:-1}).skip(1000).limit(1)
它会像50ad7bce1a3e927d690385ec。
然后在查询中将此_id传递给mongodump:
$ mongodump -d 'your_database' -c 'your_collection' -q '{_id: {$gt: ObjectId("50ad7bce1a3e927d690385ec")}}'
| 归档时间: |
|
| 查看次数: |
16304 次 |
| 最近记录: |