Как использовать 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++;
});
что-то вроде этого будет работать.