2016-05-17 253 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() } } })