2016-05-17 81 views
2

我有以下查詢文件:MongoDB的:獲取所有嵌入文檔滿足查詢

db.MyData.find({ "SubItems.EndDate" : { $lte : new Date() } }) 

它返回我在我的數據中的任何文件,其中嵌入了子項的一個結束日期是在過去,但我該怎麼辦改變這個只返回我的文檔,如果所有其子項目滿足查詢

在下面的例子中,我原來的查詢將返回兩個文件,但我只希望它返回第二個。

{ 
    "_id" : 1, 
    "name" : "item1" 
    "SubItems" : [ 
     { 
      "EndDate": ISODate("2016-10-01T00:00:00.000Z"), 
     }, 
     { 
      "EndDate": ISODate("2016-04-01T00:00:00.000Z"), 
     }, 
    ] 
} 
{ 
    "_id" : 2, 
    "name" : "item2" 
    "SubItems" : [ 
     { 
      "EndDate": ISODate("2016-02-01T00:00:00.000Z"), 
     }, 
     { 
      "EndDate": ISODate("2016-03-01T00:00:00.000Z"), 
     }, 
    ] 
} 
+0

你能告訴我們一些樣本文檔和你預期的輸出? – chridam

+0

@chridam更新 – CeejeeB

+0

參考http://stackoverflow.com/questions/10885044/mongodb-how-to-query-for-a-nested-item-inside-a-collection它可能對你有幫助 –

回答

1

在看到這個question

我設法實現什麼,我需要用下面的查詢:

edb.Bookings.find({ "ItineraryItems.EndDate" : { $not : { $gt : new Date() } } })