Как использовать for loop в mongodb

мне нужно вставить новое поле (столбец) в коллекцию 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 ответов


почему вы обновляете все записи без критериев поиска? Технически эта петля работает так, как должна. Вместо этого вам нужно сделать цикл через курсор вашей коллекции следующим образом:

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

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

что-то вроде этого будет работать.