[英]Updating array list in Mongo DB
我想更新插槽数组列表中的状态字段,其中 id =“”。
样本数据
{
"_id": ObjectId("621e816e7a938400016c5c64"),
"Resource": "abc@gmail.com",
"School": {
"Class": [
{
"Type": "ABC",
"Slots": [
{
"id": "",
"Duration": "1 week",
"Status": "Released",
"Selected": true
},
{
"id": "123",
"Duration": "1 week",
"Status": "Released",
"Selected": true
}
]
}
]
}
}
这就是我接近的方式:
db.getCollection("XYZ").update({
"Resource": "abc@gmail.com",
"School.Class": {
"$elemMatch": {
"Type": "ABC",
"Slots.Status": "Released",
"Slots.id": "",
"Slots.Duration": "1 week"
}
}
},
{
$set: {
"School.Class.$[outer].Slots.$[inner].Status": "Confirmed"
}
},
{
"arrayFilters": [
{
"outer.Type": "ABC"
},
{
"inner.Duration": "1 week"
}
]
})
但它正在更新两个数组列表确认的状态。如何更新“Slots.id”:“”的特定字段。 如果数据中有任何错位或括号丢失,请原谅我
如果我理解正确的话,你就快到了,因为你只想更新id
为""
的值,你必须将该条件添加到arrayFilters
: "inner.id": ""
。
db.collection.update({
"Resource": "abc@gmail.com",
"School.Class": {
"$elemMatch": {
"Type": "ABC",
"Slots.Status": "Released",
"Slots.id": "",
"Slots.Duration": "1 week"
}
}
},
{
$set: {
"School.Class.$[outer].Slots.$[inner].Status": "Confirmed"
}
},
{
"arrayFilters": [
{
"outer.Type": "ABC"
},
{
"inner.Duration": "1 week",
"inner.id": "" // <--- This line
}
]
})
这里的例子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.