Ali*_*aaa 2 mongodb mongodb-query
我有一个这样的数据结构:
我们有一些centers。A center有一些switches。A switch有一些ports。
{
"_id" : ObjectId("561ad881755a021904c00fb5"),
"Name" : "center1",
"Switches" : [
{
"Ports" : [
{
"PortNumber" : 2,
"Status" : "Empty"
},
{
"PortNumber" : 5,
"Status" : "Used"
},
{
"PortNumber" : 7,
"Status" : "Used"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我只想编写一个Update查询以Status将端口号PortNumber5更改为“ Empty”。
当我知道此查询的端口的数组索引(此处数组索引为1)时,可以对其进行更新:
db.colection.update(
// query
{
_id: ObjectId("561ad881755a021904c00fb5")
},
// update
{
$set : { "Switches.0.Ports.1.Status" : "Empty" }
}
);
Run Code Online (Sandbox Code Playgroud)
但是我不知道那个端口的数组索引。
感谢帮助。
通常,您可以使用位置运算符执行此操作$,如对此问题的答案所述:
不幸的是,现在位置运算符仅支持深度匹配的一个数组级别。
对于您想要的行为,有一张JIRA票证:https : //jira.mongodb.org/browse/SERVER-831
如果可以Switches改用一个对象,则可以执行以下操作:
db.colection.update(
{
_id: ObjectId("561ad881755a021904c00fb5"),
"Switch.Ports.PortNumber": 5
},
{
$set: {
"Switch.Ports.$.Status": "Empty"
}
}
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |