2017-08-25 48 views
0

我有一個文檔中收集這樣的:如何在哈希特定元素上查詢

//文檔中的一個

{

"_id" : ObjectId("556411af7361123456"), 
"owner_name": "emma", 
"animal_weight" : [ 
    { 
     "pet" : dog, 
     "weight" : 112 
    }, 
    { 
     "pet" : cat, 
     "weight" : 30 
    } 
] 

}

{

"_id" : ObjectId("556411af736112345678910"), 
"owner_name": "jenny", 
"animal_weight" : [ 
    { 
     "pet" : dog, 
     "weight" : 100 
    }, 
    { 
     "pet" : animal, 
     "weight" : 25 
    } 
] 

}

我想讓mongodb返回狗的體重超過110的所有者(owner_name)的名稱。查詢應該是什麼樣的?基本上,數組'animal_weight'中有兩個元素,每個元素(散列)包含兩個鍵值對(一個是寵物類型,無論是狗還是貓;另一個是寵物的重量)。如何在mongo查詢中對狗的體重應用過濾器?謝謝!

+1

在什麼語言? – ryantxr

+0

對不起,我忘了指定,在mongo – ketie

回答

0

您可以使用$ elemMatch運營商查詢:

的$ elemMatch運營商匹配包含與所有指定查詢條件匹配的至少一個元素的數組字段的文件。

查詢可能是這樣的:

db.pets.find({ "animal_weight": { $elemMatch: { pet: "dog", weight: {$gt: 110} } } }, {_id:0, owner_name:1}) 
+0

它完美的作品。謝謝歐幾里德! – ketie