MongoDB - 从集合中移除对象

时间:2015-11-03 14:30:13

标签: mongodb

如何从MongoDB中的集合中删除除前n个对象之外的所有对象?例如,我只想保留我的集合中的前2000个对象,但目前有15000个对象。

编辑:我的问题比this相关问题更为笼统。不重复。

2 个答案:

答案 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