如何在mongodb中使用for循环

时间:2012-10-18 08:30:40

标签: javascript mongodb mongodb-query

我需要在mongodb集合中插入一个新字段(列),该集合现在有5246个文档。该字段应自动递增。所以我使用for循环。我的查询如下`

for(i=1;i<=5246;i++) {
    db.coll.update({},{$set:{"new_field":i}},false,true)
}; 

但我的不好输出是,

{new_field:5246},{new_field:5246},{new_field:5246},.......

查询有问题吗??。

1 个答案:

答案 0 :(得分:19)

为什么要更新没有查找条件的所有记录?从技术上讲,这个循环正在按预期工作。你需要做的是循环你的集合的光标,如下所示:

var cursor = db.coll.find(),
    i = 0;

cursor.forEach(function(x){
    db.coll.update({_id: x._id}, {$set:{new_field:i}})
    $i++;
});

这样的东西会起作用。