我在使用 Mongoose 中的“$in”运算符时遇到问题。在较高级别上,我有一个用户模式,其中一个字段是卡模式的数组。在卡片模式中有一个“分数”字段。我想根据卡 ID 列表更新“分数”字段。这是我尝试使用的:
User.updateMany(
{
"_id": userId,
"cards._id": {
"$in": cardIds
}
},
{ $inc: {"cards.$.score": 1 }},
(err) => {console.log(err)}
)
当我运行此代码时,只有 cardIds
数组中的第一个 Card 被更新,而不是全部。知道为什么这不起作用吗?谢谢。
最佳答案
您需要在 .updateMany() 中使用 arrayFilters ,尝试这个查询:
User.updateMany({
"_id": userId
},
{ $inc: { "cards.$[element].score": 1 } },
{ arrayFilters: [{ "element._id": { "$in": cardIds } }] },
(err) => {}
)
关于javascript - Mongoose $in 运算符仅更新一个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60437270/