javascript - Mongoose $in 运算符仅更新一个文档

标签 javascript node.js mongodb mongoose

我在使用 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/

相关文章:

MongoDB - 从单个数组元素中取消设置属性

javascript - 将鼠标悬停在一个表格单元格上将突出显示一行中的前一个单元格

javascript - 当我们崩溃时过渡不好

node.js - no_ready_check在redis客户端参数中意味着什么

node.js - Mongoose 查找查询传递变量

mongodb - 如何使用 map/reduce 处理 10000 多个唯一键以在 MongoDB 中进行分组?

javascript - Titanium 移动 Controller 的问题

javascript - 监视父方法 Vuejs

node.js - 避免用户从控制台调用函数(express app)

javascript - 从 Node 应用程序终止进程