gpt4 book ai didi

mongodb 替换子文档的特定值的所有实例

转载 作者:可可西里 更新时间:2023-11-01 09:31:55 25 4
gpt4 key购买 nike

我的收藏(称为“ worker ”):

"_id" : "500"
"type" : "Manager",
"employees" : [{
"name" : "bob"
"id" : 101
},{
"name" : "phil"
"id" : 102
}]

目标:对于类型为 Manager 且包含“id”为 102 的子文档的每个 _id:将 102 替换为 202。

期望的最终结果:

"_id" : "500"
"type" : "Manager",
"employees" : [{
"name" : "bob"
"id" : 101
},{
"name" : "phil"
"id" : 202
}]

我试过:

db.workers.update({type:'Manager','employees.id':'102'},{$set:{'employees.id':'202'}},{multi:true})

然后我做了以下两件事来验证:

db.workers.find({type: "Manager", 'employees.id': 102}).count()

我的结果是 9。

我也试过这个来验证:

db.workers.find({$and: [{type: "Manager"},{"employees.id":60}]}).count()

这返回了 0。

此时我很困惑。我的更新有误吗?我的发现错了吗?两者都有吗? “9”的结果是错误的吗? “0”是错误的吗?

最佳答案

您需要使用 $ positional update运算符更新与您的查询匹配的特定元素。您的更新还使用了 '102''202' 的值,这使得更新在这些字段为数字时尝试匹配字符串。

您的更新应如下所示:

db.workers.update(
{type: 'Manager', 'employees.id': 102},
{$set: {'employees.$.id': 202}},
{multi: true})

关于mongodb 替换子文档的特定值的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com