一次删除范围记录 - mongodb

时间:2015-01-29 19:36:04

标签: javascript mongodb meteor

我想删除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});
});

但是我使用了每个,因为我不知道如何删除一条指令中的所有记录,而我无法在Google上找到这些信息,如何通过MongoDB实现这一目标?

1 个答案:

答案 0 :(得分:1)

我不确定如何将其转换为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通常会是一个单调递增的值。