Я использую $in
и $addToSet
для обновления массива в моих коллекциях. Скажем, у меня есть такие документы.
{
_id: objectId(1), //this is just an example id
names: ['harry', 'hermione']
},
{
_id: objectId(2),
names: ['ron']
},
{
_id: objectId(3),
names: ['dumbledoor']
}
Я хочу, чтобы обновить все эти документы, поэтому у меня есть массив идентификаторов
var arr_ids = [1, 2];
и использовать массив map
как это.
Чтобы обновить все документы в моих коллекциях.
db.update({ _id: { $in: ids } }, { $addToSet: { name : 'draco' } },
function(err, results) {
if(err) console.log(err);
console.log(results);
}
);
Я использую $in
и $addToSet
, и она работает и обновляет документ, но он обновляет только последний документ.
{
_id: objectId(1), //this is just an example id
names: ['harry', 'hermione']
},
{
_id: objectId(2),
names: ['ron', 'draco'] // it only update this document.
},
{
_id: objectId(3),
names: ['dumbledoor']
}
Я не знаю почему. Я не хочу создавать цикл for, чтобы обновлять его по отдельности, но мне кажется, что это мое последнее средство. Пожалуйста, помогите мне. Благодаря!