在mongodb中更改设置对象中的字段

时间:2015-04-01 11:44:06

标签: mongodb mongodb-query

我在mongo中有这个文件:

{
    id: objectId,
    list: [ 
    {
        id: internalObjectId1,
        enabled: true
    },
    {
        id: internalObjectId2,
        enabled: false
    }]
}

我需要更改启用的字段。我该怎么办?

1 个答案:

答案 0 :(得分:1)

使用 positional $ operator 。假设您的集合中有以下文档,其list元素值是嵌入文档的数组:

{
    "_id" : ObjectId("551be1a04db8a16ac729432e"),
    "list" : [ 
        {
            "id" : ObjectId("54f43159c922ac0b4387ef9c"),
            "enabled" : true
        }, 
        {
            "id" : ObjectId("54f43159c922ac0b4387ef9d"),
            "enabled" : false
        }
    ]
}

以下内容将更新嵌入文档中enabled字段的值id 54f43159c922ac0b4387ef9dtrue

db.collection.update(
   { 
        "_id": ObjectId("551be1a04db8a16ac729432e"), 
       "list.id": ObjectId("54f43159c922ac0b4387ef9d") 
   },
   { 
       "$set": {"list.$.enabled": true} 
   }
)