一次删除范围记录 - 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
通常是一个单调递增的值。
我想删除 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
通常是一个单调递增的值。