web-dev-qa-db-ja.com

Mongodb-ネストされた配列とオブジェクトのクエリ

次のドキュメント構造があります。

{
   "_id":"12345",
   "value":{
      "T":0,
      "v":[
         {
            "name":"JW",
            "cost":100
         }
      ]
   }
}

名前キーを照会するにはどうすればよいですか?ドット表記を試しましたが、運がありませんでした(2つのレベルでしか機能しないと思います)。

24
karel lahmy

何を試したかは明確ではありませんが、nameによって上記のドキュメントを見つけるにはこれでうまくいくはずです。

db.collection.find({ "value.v.name": "JW" })

参考

32
JohnnyHK

$elemMatch演算子を使用する必要があります:

db.collection.find({
    'value.v': { 
        $elemMatch: {
            name: 'JW', // "name == 'JW'"
            cost : 100 //if you need "&& cost == 100"
        }
    }
});

Mongo docs

13
neftedollar