如何在mongodb中使用for循环

Moh*_*bin 9 javascript mongodb mongodb-query

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

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

但我的不好输出是,

{new_field:5246},{new_field:5246},{new_field:5246},.......
Run Code Online (Sandbox Code Playgroud)

查询有问题吗?

Sam*_*aye 19

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

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

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

这样的东西会起作用.