更新 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 }]
}
)
解释:
在查询部分指定匹配文档并创建 arrayFilter "x" 匹配正确的 reportTYpes 数组子文档,在更新部分使用 $inc 操作将示例中的计数值增加 1
这是我的 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 }]
}
)
解释: 在查询部分指定匹配文档并创建 arrayFilter "x" 匹配正确的 reportTYpes 数组子文档,在更新部分使用 $inc 操作将示例中的计数值增加 1