I need to insert a new field(column) to mongodb collection which has now 5246 documents. The field should be auto incremented . So that i use an for loop . My query is as follows `
for(i=1;i<=5246;i++) {
db.coll.update({},{$set:{"new_field":i}},false,true)
};
But my bad the output is as,
{new_field:5246},{new_field:5246},{new_field:5246},.......
Is there any problem with query..?.
I need to insert a new field(column) to mongodb collection which has now 5246 documents. The field should be auto incremented . So that i use an for loop . My query is as follows `
for(i=1;i<=5246;i++) {
db.coll.update({},{$set:{"new_field":i}},false,true)
};
But my bad the output is as,
{new_field:5246},{new_field:5246},{new_field:5246},.......
Is there any problem with query..?.
Share Improve this question edited May 5, 2016 at 9:45 kadamb 1,7283 gold badges33 silver badges64 bronze badges asked Oct 18, 2012 at 8:30 Mohammed shebinMohammed shebin 4793 gold badges11 silver badges24 bronze badges 1- You sure this is Java? Doesn't look like it. – Nick H Commented Oct 18, 2012 at 8:39
1 Answer
Reset to default 20Why are you updating all records with no find criteria? Technically this loop is working as it should. What you need to do instead is loop through a cursor of your collection like so:
var cursor = db.coll.find(),
i = 0;
cursor.forEach(function(x){
db.coll.update({_id: x._id}, {$set:{new_field:i}})
$i++;
});
Something like that would work instead.