首页 > 解决方案 > MongoDB:在路径中找不到标识符“elem”的数组过滤器

问题描述

我在 Nodejs 中使用 mongoDB(版本 2.2.36)。问题是当我尝试使用数组更新时出现错误“在路径中找不到标识符'竞争对手'的数组过滤器......”,但是当我在 mongo shell 中尝试时一切正常。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 是最新的。

标签: node.jsmongodb

解决方案


MongoDB Node.JS 驱动程序版本 2.2.36 在更新方法中没有数组过滤器支持。

从 3.0 版开始更新确实有 arrayFilters 选项。

您需要升级驱动程序才能使用该选项。


推荐阅读