1

これは私のデータベースにあるものです。

{     
    "_id": { "$oid" : "1111" },
    "gallery": {
        "images": [
        {
            "image": "test1.jpg",
            "_id": { "$oid" : "1111a" }
        },
        {
            "image": "test2.jpg",
            "_id": { "$oid" : "1111b" }
        },
        {
            "image": "test3.jpg",
            "_id": { "$oid" : "1111c" }
        }
      ]
    }
}
,{     
    "_id": { "$oid" : "2222" },
    "gallery": {
        "images": [
        {
            "image": "test1.jpg",
            "_id": { "$oid" : "2222a" }
        }
      ]
    }
}

最初の要素 (_id:"1111") の 2 番目の要素 (image:"test2.jpg") を更新したいと思います。結果は

        ...
        {
            "image": "test2new.jpg",
            "_id": { "$oid" : "1111b" }
        },
        ...

2番目の画像「1111b」の_idがあります。どうすればいいですか?

更新
このクエリを試しましたが、うまくいきません。

{ 
    '_id':{'$oid' : '1111' }
   ,'gallery.image': $elemMatch:{ '_id':{'$oid':'1111b' } }
}
,{ 
    $set:{ 'gallery.images.$.image':'test2new.jpg' }
}

SOLUTION
_id 引用符なし、追加 { "$oid" なし:

{ 
    { _id : '1111' }
   ,{ 'gallery.image': $elemMatch:{ _id:'1111b' } }
}
,{ 
    $set:{ 'gallery.images.$.image':'test2new.jpg' }
}
4

1 に答える 1