2013-12-12 23 views
0

我有一個包含數組格式數據的集合,如下所示。如何在mongodb上對數組內容應用過濾器

db.mycollection.save(
{ 
    "username": "jain", 
    "options": [ 
     { 
      "expiration_dt": "2016-01-15", 
      "isMini": false 
     }, 
     { 
      "expiration_dt": "2014-01-18", 
      "isMini": true 
     }, 
     { 
      "expiration_dt": "2014-01-18", 
      "isMini": false 
     } 
    ] 
} 
) 

以這樣的方式,它會命名基於expiration_dt字段「選項」的陣列的元素進行排序,並返回所獲得的結果中的第一個書寫的查詢。

這是做這項工作

db.mycollection.aggregate({$match : {"username" : "jain"}},{$unwind: "$options"},{$sort: {"options.expiration_dt":1}},{$limit : 1}) 

我的問題是,我可以包括過濾器基於isMini在上面的查詢字段(因爲現在我面臨的問題是查詢,如果一個數組是相同的expiration_dt,它返回我該數組中存在的第一個匹配元素 所以我想包括一個更多的基於isMini屬性的過濾器,以便它返回我正確的數據,即使它有得到相同的expiration_dt。

回答

1

更新您的查詢,如下所示,這樣只會發現有isMini子文件=假

db.mycollection.aggregate(
    {$unwind: "$options"}, 
    {$match : {"username" : "jain", "options.isMini" : false}}, 
    {$sort: {"options.expiration_dt":1}}, 
    {$limit : 1} 
) 
+0

完美的工作,非常感謝你,先生。 – Pawan

+0

不客氣。 –

相關問題