更新 objects 数组中的值,在 MongoDB 中的文档中

Update a value inside array of objects, inside a document in MongoDB

这是我的 collection 的样子

现在假设我必须更新 reportTypes.reasonId 为 300 的第二个文档的 count。我可以访问 _id 以及 reasonId 来更新 count。我正在使用 Mongoose 查询我的 Node 应用程序中的内容。

我可以尝试解决这个问题吗?

您应该使用点符号和 $ 更新运算符来执行此操作: (我假设你的 collection 叫做 Reason)

var conditions = {
  '_id': '6244........',
  'reasonTypes.reasonId': 300
}
var update = {
  $inc: {
    'reasonTypes.$.count': 1
  }
};

Reason.update(conditions, update, function(err) {
  // Handle error here
})

您可以在此处找到有关运算符的更多信息mongo $ update operator

您可以通过 arrayFilters 来完成:

db.collection.update(
   { 
    managerId:3 
   },
   {
    $inc:{"reportTypes.$[x].count":1} 
   },
   { 
   arrayFilters:[{"x.reasonId":300  }]
   }
  )

playground

解释: 在查询部分指定匹配文档并创建 arrayFilter "x" 匹配正确的 reportTYpes 数组子文档,在更新部分使用 $inc 操作将示例中的计数值增加 1