2011-04-13 145 views
3

我收集如下。mongodb陣列中的匹配元素

{ 
"name" : "pqr" , 
"loc" : 
    [ 
    {"area" : "c" , "country" : "d"}, 
    {"area" : "w" , "country" : "r"} 
    ] 
} 

我想使該匹配,使得只有匹配陣列LOC

這意味着如果

  1. 給出面積爲c或國家d那麼它返回文檔的第一個元素。
  2. 給區域爲w或國家爲r則不會返回元素

只匹配蒙戈陣列

的第一要素是這是可能在蒙戈?

如果有一個人知道PLZ回覆

感謝

回答

3

所以,如果你想只返回第一個匹配元素,你應該使用limit(n)和查詢這樣的:

1.gives面積爲c或國家然後它返回文檔。

db.items.find({ $or : [ {"loc.area": "c" } , 
         {"loc.country ": "d" } ] }).limit(1); 

2.gives面積爲w或國家爲r那麼如果你想只在嵌套數組,你可以用它做的第一要素來搜索不返回元素

db.items.find({ $or : [ {"loc.area": { "$ne" : "w" } }, 
         {"loc.country": { "$ne" : "r" } } ] }).limit(1); 

位置操作員加入.0. - >loc.0.area

更新:我首先誤解了你的問題。現在我看到你在尋找loc.0.area

+0

感謝loc.0.area它的工作原理 – 2011-04-13 10:19:04