У меня проблема с точечной нотацией mongodb для массивов.
В массиве 'base' в пользовательском объекте есть набор баз, которые я пытаюсь обновить с помощью точечной нотации.Чтобы еще больше усложнить ситуацию, я помещаю обновления в массив функций и вызываю их с помощью библиотеки Async.
//NOTE: baseIndex, baseData, dbCollection and baseOwner are considered defined already.
let updateArray = []
let thisUpdateObject = {}
thisUpdateObject['$set'] = {}
thisUpdateObject['$set']['bases.'+baseIndex] = baseData
let thisUpdate = function(callback){
dbCollection.update({'id':baseOwner},thisUpdateObject,function(err, result){
if (err){
callback(err)
} else {
callback(null, result);
}
});
}
updateArray.push(thisUpdate)
async.parallel(updateArray,function(err, results){
if...
Мой результат говорит о следующем:
n: 0,
nModified: 0,
ok: 1 }
I 'мы проверили, что в документе существует массив base, который соответствует 'id': baseOwner.Нулевой элемент существует в массиве (что не должно иметь значения, но он уже существует.)
Когда я вставляю свое обновление в консоль, я получаю следующее:
'$set': { 'bases.0': { *contains correct object*}}
Наконец,Я знаю, что асинхронная система обновлений работает, потому что в случаях, когда точечная запись не включена, обновление IS корректно изменяет документы.
Я предполагаю, что что-то не так с моей точечной нотацией, ноЯ не вижу, что.
Я делаю какие-либо очевидные ошибки?