如何删除MongoDb中间隔内的行

时间:2012-01-21 08:30:25

标签: mongodb

我有一个包含很多行的集合,例如:

{ "_id" : 1, "state" : "1+" }

我想设置一个cron选项卡,以便删除我的集合中的前N行。

我试过了:

db.history.remove(
    {
        _id : 
        { 
            $lt : db.history.find().sort({_id:1}).limit(1)._id + N
        }
        , 
        $atomic : true 
    }
);

其中N是要删除的行数,然后我会在我的cron任务中的--eval内添加此字符串,但此命令不返回任何内容。

我做错了什么?我可以在参数...

中编写一个带N的服务器端函数

1 个答案:

答案 0 :(得分:2)

以下适用于我:

for (var v = db.ninja.find().sort({_id:1}).limit(2);v.hasNext();) 
{
    db.ninja.remove(v.next());
}

注意:

1)将ninja替换为您的收藏品名称

2)变量v将光标指针保存到已排序的文档(按_id排序)。我给出了一个限制值2,你可以用N

的值替换它