【发布时间】:2021-08-08 05:13:21
【问题描述】:
我的文档在 MongoDB 中如下所示:
{
"_id": {
"$oid": "6099d057b769cc513025fd54"
},
"key_name": "I_CAN_MATCH",
"object_1": {
"sub_object_array_1": [{
"a": "TZNNI",
"b": "R"
}],
"sub_object_array_2": [{
"c": "SDLYA",
"d": "N"
}, {
"c": "KTSMQ",
"d": "N"
}],
"sub_object_array_3": [{
"e": "KYCT0",
"f": "F"
}, {
"e": "KYCT1",
"f": "N"
}, {
"e": "KYCT2",
"f": "F"
}, {
"e": "KYCT3",
"f": "E"
}],
},
"object_2": {
"sub_object_4": { "and": "so on ..." }
},
"object_array_1": [{
"g": "KYCT0",
"h": "F"
}, {
"g": "KYCT1",
"h": "N"
}, {
"g": "KYCT2",
"h": "F"
}, {
"g": "KYCT3",
"h": "E"
}]
}
我的问题是如何更新数组 sub_object_array_3 where f = "F" to f = "U"?
以下内容对我不起作用:
await db_model.updateMany(
{ key_name: "I_CAN_MATCH" },
{ $set: { "object_1.sub_object_array_3.$[array_element].f": "U" } },
{ arrayFilters: [ { "array_element.f": "F" } ] } );
但以下内容可以!所以我理解语法在这种情况下是如何工作的。
await db_model.updateMany(
{ key_name: "I_CAN_MATCH" },
{ $set: { "object_array_1.$[array_element].h": "U" } },
{ arrayFilters: [ { "array_element.h": "F" } ] } );
我只是不知道当数组首先位于对象内部时,我在 $set 命令中缺少什么。
我已经搜索过了,但是我使用的每个搜索词都将我指向数组中的数组,这里不是这种情况。 有人可以帮助我吗?
提前致谢!
【问题讨论】:
-
请删除不相关的字段。
-
我不确定我明白你的意思。
标签: arrays mongodb object nested mongodb-query