如何从MongoDB中的集合中删除除前n个对象之外的所有对象?例如,我只想保留我的集合中的前2000个对象,但目前有15000个对象。
编辑:我的问题比this相关问题更为笼统。不重复。
答案 0 :(得分:2)
您是否考虑过使用 max 参数上限收藏? https://docs.mongodb.org/manual/core/capped-collections/
db.createCollection(" log",{capped:true,max:2000});
如果你真的想要删除除2000个最新对象以外的所有对象,你可以找到_id并删除{_ 1}}而不是_id。
答案 1 :(得分:2)
您可以选择第一个N
文档的ID(您要保留的文件):
var ids = [];
db.collection.find().limit(N).toArray().map(function(doc){
ids.push(doc._id);
});
然后,执行以下查询:
db.collection.remove({_id:{$nin:ids}})
这将删除数组ids
中id不为的每个元组。有关$nin
(即“不在”)运算符的详细信息,请参阅this link。