MongoDB: для идентификатора 'elem' в пути не найден фильтр массива - PullRequest
0 голосов
/ 20 июня 2020

Я использую mongoDB (версия 2.2.36) в Nodejs. Проблема в том, что когда я пытаюсь использовать обновление массива, появляется ошибка «Не найден фильтр массива для идентификатора« соперник »в пути ...», но когда я пытаюсь использовать его в оболочке mon go, все в порядке. Код в nodejs:

db.get().collection(collectionName).update({ _id: ObjectID(id) }, {$inc: {
        "votesCount": 1,
        "rivals.$[rival].votes": 1
    },
}, { arrayFilters: [{ "rival.id": voteModel.answerId }]}, function (err, docs) {
    cb(err, docs);
});

Я пытаюсь обновить версию, но версия 2.2.36 самая последняя.

1 Ответ

2 голосов
/ 21 июня 2020

Драйвер MongoDB Node.JS версии 2.2.36 не поддерживает фильтр массива в методе обновления .

Начиная с версии 3.0 обновление действительно имеет параметр arrayFilters.

Вам необходимо обновить драйвер, чтобы использовать этот параметр.

...