在 mongodb 中更改集合对象中的字段

changing field in a set object in mongodb

我在 mongo 中有此文档:

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

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

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

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

下面将54f43159c922ac0b4387ef9did嵌入文档中enabled字段的值更新为true

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