我想删除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实现这一目标?
答案 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
通常会是一个单调递增的值。