我需要在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},.......
查询有问题吗??。
答案 0 :(得分:19)
为什么要更新没有查找条件的所有记录?从技术上讲,这个循环正在按预期工作。你需要做的是循环你的集合的光标,如下所示:
var cursor = db.coll.find(),
i = 0;
cursor.forEach(function(x){
db.coll.update({_id: x._id}, {$set:{new_field:i}})
$i++;
});
这样的东西会起作用。