一次删除范围记录 - mongodb

Delete range records at once - mongodb

我想删除 MongoDB 集合的 50% 记录,假设我们想删除最旧的记录。

所以我有这个脚本:

var count = Twitter_tweets.find().count();
var limit = Math.round(count *.5);
var tweets = Twitter_tweets.find().sort({$natural:1}).limit(limit);

_.each(tweets,function(tweet){
    Twitter_tweets.delete({_id : tweet._id});
});

但我使用的是 each,因为我不知道如何在一条指令中删除所有记录,而且我在 Google 上找不到该信息,如何使用 MongoDB?

我不确定如何将它准确地转换成 Meteor 代码,但这里有一个方法的想法:

var count = Twitter_tweets.find().count();
var limit = Math.round(count * .5);
var tweet = Twitter_tweets.find().sort({_id: 1}).skip(limit).limit(1).fetch()[0];

Twitter_tweets.remove({_id: { $lt: tweet._id } });

想法是获取集合中正中间的文档的 _id,然后删除所有具有较低 _id 的文档。除非做了有趣的事情,否则 _id 通常是一个单调递增的值。