【发布时间】:2021-07-27 13:18:37
【问题描述】:
我需要更新 mongoDB 中嵌套数组的特定元素
我的 mongoDB 数据如下所示。我需要匹配值 accessid 和 name 来更新状态。输入内容有
{"accessid" : 1627047023995, "name" : Name 09, "status" : 100 }
输入的内容可能属于任意level
{
"_id" : ObjectId("60fac46ffcbf5287248460a9"),
"levelone" : [
{
"level" : [
{
"name" : "Name 01",
"status" : 5
},
{
"name" : "Name 02",
"status" : 0
},
{
"name" : "Name 03",
"status" : 0
}
],
"accessid" : "1627047023995"
},
{
"level" : [
{
"name" : "Name 09",
"status" : 5
},
{
"name" : "Name 15",
"status" : 3
}
],
"accessid" : "1627047023995"
}
],
"createdAt" : ISODate("2021-07-23T13:30:23.995Z")
}
我已尝试更新状态,但它仅更新第一个索引值 - 名称:名称 01 状态。请指导解决问题。
collections.updateOne({
'levelone.level.accessid': accessid,
'levelone.level.name': name
}, { '$set': { 'levelone.$.level.status': status } }).exec();
【问题讨论】: