javascript - Mongoose $in 运算符仅更新一个文档
问题描述
我在使用 Mongoose 中的“$in”运算符时遇到问题。在高层次上,我有一个用户模式,其中一个字段是卡片模式的数组。在 Card 模式中有一个“score”字段。我想根据卡片 ID 列表更新“分数”字段。这是我正在尝试使用的:
User.updateMany(
{
"_id": userId,
"cards._id": {
"$in": cardIds
}
},
{ $inc: {"cards.$.score": 1 }},
(err) => {console.log(err)}
)
当我运行此代码时,仅更新数组中的第一张卡片,cardIds
而不是全部更新。知道为什么这不起作用吗?谢谢。
解决方案
您需要在.updateMany()中使用 arrayFilters ,试试这个查询:
User.updateMany({
"_id": userId
},
{ $inc: { "cards.$[element].score": 1 } },
{ arrayFilters: [{ "element._id": { "$in": cardIds } }] },
(err) => {}
)
推荐阅读
- c# - 派生 XPath 以访问表元素
- python - setup.py 生成带有“#!”的 /usr/bin 包装器。社邦
- gson - 如何使用 gson.fromJson() 基于 json 字符串的数据构建 Gson 以创建不同的 pojo 类
- html - Bootstrap Carousel 渲染但不滑动。左右图标也不起作用
- mysql - 如何查询数据库中的所有表以获取最后一个现有值?
- azure-cli - JMESPath 从列表中提取原始值
- android - 隐式广播:如何保持 pre-oreo 的向后兼容性
- json - 如何将 json 数据集加载到张量流中?
- angularjs - Angular.js 复选框
- excel - 如何以编程方式区分 Excel 2019 和 2016?