2016-05-18 13 views
0

は、ここで私はf3=rain、およびf1=catでものを見つけるしたいと思い、私のデータMongoDBで複数の条件を持つ配列内のオブジェクトをクエリする方法はありますか?

// Data 1 
{ 
    name : 111, 
    factors : 
    [ 
    {name:"f1", value:"dog", unit : "kg"}, 
    {name:"f2", value:"0"}, 
    {name: "f3", value:"rain"} 
    ] 
}, 
// data2 
{ 
    name : 112, 
    factors : 
    [ 
    {name:"f1", value:"cat", unit : "g"}, 
    {name:"f2", value:"13"}, 
    {name: "f3", value:"rain"} 
    ] 
} 
// more data ... 

です。

私は

query = { 
    factors : { 
    $elemMatch : 
     [ 
      {name: "f1", value:"cat"}, 
      {name: "f3", value: "rain"} 
     ] 
}, 

を試してみましたが、エラーが Error: error: { "$err" : "$elemMatch needs an Object", "code" : 12517 }

が、私はそのクエリを構築するために何をすべき、と言っていますか?

答えて

3

あなたは$and論理クエリ演算子

db.collection.find(
    { $and: [ 
     { "factors": { $elemMatch: { "name": "f1", "value": "cat" } } }, 
     { "factors": { $elemMatch: { "name": "f3", "value": "rain" } } } 
    ]} 
) 
+0

THXを使用する必要があります! p.s.この種の検索では最適なデータスキーマだと思いますか?スキーマを '[{" f1 ":" val12 "}、{f2:" val22 "}]'とする方が良いでしょうか? – ppn029012

関連する問題