0
我對mongodb比較陌生。我們有一個集合中有startDate和endDate的文檔。什麼是最好的方式來查詢只有那些startDate和endDate文件在另一個日期範圍。mongodb日期範圍查詢獲取具有startDate&endDate的記錄
比方說,我們在報告陣列下面的子文件:
{reports: [
{
"startDate" : ISODate("2017-07-02T00:00:00Z"),
"endDate" : ISODate("2017-07-08T00:00:00Z"),
"data" : [ ]
},
{
"startDate" : ISODate("2017-07-09T00:00:00Z"),
"endDate" : ISODate("2017-07-15T00:00:00Z"),
"data" : [ ] },
{
"startDate" : ISODate("2017-07-16T00:00:00Z"),
"endDate" : ISODate("2017-07-22T00:00:00Z"),
"data" : [ ] }
]}
現在我想查詢只子文檔2017年7月1日和2017年7月16日之間的報告陣列英寸在結果 預期的子文件應該是:
[{
"startDate" : ISODate("2017-07-02T00:00:00Z"),
"endDate" : ISODate("2017-07-08T00:00:00Z"),
"data" : [ ]
},
{
"startDate" : ISODate("2017-07-09T00:00:00Z"),
"endDate" : ISODate("2017-07-15T00:00:00Z"),
"data" : [ ] }]
我也做了查詢的聚集和突出部分。它似乎工作正確。 唯一的問題是我應該在過濾器中使用什麼樣的條件。這裏是Iam嘗試使用但不給我預期結果的查詢的過濾器部分:
{$filter: {
input: "$reports", as: "reports",
cond: {$and:
[{ $gte: ["$$reports.startDate", new Date("2017-07-02") ]},
{ $lte: ["$$reports.endDate", new Date("2017-07-08")
]}]}}}
爲什麼它不能正常使用JS日期對象:) – user22197