2016-05-18 94 views
0

這裏是我的數據如何使用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 ... 

我想找到f3=rain,並f1=cat之一。

我已經試過

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!附:你認爲這是這種搜索的最佳數據模式嗎?或者更好地使架構爲'[{「f1」:「val12」},{f2:「val22」}]'? – ppn029012

相關問題