2016-10-05 69 views
2

我有一個看起來像這樣的mongodb模式。你如何尋找這樣的文件find匹配Name == Brad你如何找到兩級深度的mongodb記錄

{ 
"_id" : ObjectId("57f580efe2ab6485147d0f71"), 
"0" : { 
    "Name" : "Brad", 
    "Age" : 42 
}, 
"1" : { 
    "Name" : "Paul", 
    "Age" : 32 
} 

}

的模式是由我從一個swift程序中使用保存JSON串庫移交給我的紀錄。該庫是Perfect MongoDB

+1

你可以改變你的文件有名稱/年齡對象的數組? –

+1

文檔是否只包含名爲「0」和「1」的子文檔,或者是否有「2」,「3」等? –

+0

是的,這個數字在我的json中進展得很多。我認爲這是我的mongodb庫的問題。 – rptony

回答

1

這不能用純mongo來完成,我建議你改變模式。 但是,它可能使用$where

db.test.find({ 
    $where: function() { 
     for (var prop in this) { 
      if (this[prop]["Name"] == "Brad") { 
       return true; 
      } 
     } 
     return false; 
    } 
}) 
+0

這個怎麼樣,'{ \t 「_id」:物件( 「57f6ab3ce2ab6411d53fb831」), \t 「用戶」:[ \t \t { \t \t \t 「名稱」: 「蘭芝斯」, \t \t \t 「年齡」 :42 \t \t}, \t \t { \t \t \t 「名稱」: 「保羅」, \t \t \t「Age」:32 \t \t} \t] }' – rptony

+1

@rptony是的,'用戶'數組更有意義。您將能夠通過常規的'find'查詢來查找用戶,或者使用'aggregation'中的'$ filter'過濾數組。你會發現任何地方的這個問題的簡單答案:) – TomG