我正在尝试从字符串数组中更新/替换单个项目。我该如何在mongodb中做到这一点?
我尝试使用mongodb版本> = 4,猫鼬> = 5和nodejs> = v12.2.0。
这是我的更新:
{
_id: bot._id,
intents: {
$elemMatch: {
name: "car",
examples: "blue",
},
},
},
{
$set: { 'intents.$[outer].examples.$[inner]': "yellow" },
},
{
arrayFilters: [
{ 'outer.name': "car" },
{ 'inner.examples': "blue" },
],
},
这是一个文档:
{
"_id" : ObjectId("5cff64bacea5f52b74cefd57"),
"name" : "a",
"language" : "en",
"userId" : "auth0|5ce2ce9fb0ada80ea32d7643",
"cloudBotId" : "4327a229-ec34-423e-b9ad-4778cf74b0a0",
"intents" : [
{
"examples" : [
"blue"
],
"name" : "car"
},
{
"examples" : [
"red"
],
"name" : "bike"
}
],
"__v" : 0
}
我希望将“蓝色”替换为“黄色”。
答案 0 :(得分:0)
您就近在咫尺...无需在arrayFilters中添加示例,只需使用inner:
{
_id: bot._id,
intents: {
$elemMatch: {
name: "car",
examples: "blue",
},
},
},
{
$set: { 'intents.$[outer].examples.$[inner]': "yellow" },
},
{
arrayFilters: [
{ 'outer.name': "car" },
{ 'inner': "blue" },
],
}