我有以下数据:
{
info:{
id:0000,
name:"Iot name",
vendor:"some vendor",
},
location:[
{
lat:0,
lng:0,
status:3,
locID:"uniqueID0"
},{
lat:1,
lng:1,
status:0,
locID:"uniqueID1"
},{
lat:2,
lng:2,
status:1,
locID:"uniqueID2"
}
]}
需要像 findAndModify 或类似其他类似的示例来查找 在iots集合中,具有唯一ID的位置并更改其状态。
例如在集合 iot 中查找, id = 0000 的元素和 locID =“ uniqueID1 “并将该位置的状态设置为2
提前致谢
答案 0 :(得分:2)
将$set
运算符与更新中的 $
positional operator 一起应用,以将该位置的status
字段设置为2. { {3}} 将标识要更新的数组中的正确元素,而不显式指定元素在数组中的位置,因此最终的更新语句应如下所示:
db.iost.update(
{
"info.id": 0000,
"location.locID": "uniqueID1"
},
{
"$set": {
"location.$.status": 2
}
}
)