我需要在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},.......
这个查询有问题吗..?.
我需要在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},.......
这个查询有问题吗..?.
为什么你要在没有查找条件的情况下更新所有记录?从技术上讲,这个循环是按照它应该做的方式工作的。相反,你需要遍历你集合中的一个游标,像这样:
var cursor = db.coll.find(),
i = 0;
cursor.forEach(function(x){
db.coll.update({_id: x._id}, {$set:{new_field:i}})
$i++;
});
可以尝试使用类似这样的方式。
forEach
。实际上,您可以在此处将for
替换为forEach
。 - Sammayerow._id
正在访问您提取的那个row
的_id
。我已经更改了我的代码,使其从forEach
函数中工作,它应该可以直接使用。 - Sammayejavascript
语言中的方式,而for
是一个非常基本的循环,只是表示对于游标中的每个row
执行此操作。 - Sammaye