数组中的MongoDB findAndModify元素

时间:2016-01-29 12:06:48

标签: mongodb

我有以下数据:

{
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

提前致谢

1 个答案:

答案 0 :(得分:2)

$set运算符与更新中的 $ positional operator 一起应用,以将该位置的status字段设置为2. { {3}} 将标识要更新的数组中的正确元素,而不显式指定元素在数组中的位置,因此最终的更新语句应如下所示:

db.iost.update(
    { 
        "info.id": 0000,
        "location.locID": "uniqueID1"   
    }, 
    {
        "$set": {
            "location.$.status": 2
        }
    }
)