2017-08-11 22 views
1

我想作這種聚合管道在Spring數據蒙戈春數據MongoDB的聚集如同日期

db.Events.aggregate([ 
        { 
         "$match": { 
          "date": { 
           "$gte": ISODate("2017-03-13"), 
           "$lt": ISODate("2017-03-12") 
          } 
         } 
        } 
]) 

所以我讓比賽階段是這樣的:

BasicDBObject("$match", 
       new BasicDBObject("date", 
         new BasicDBObject("$gte","ISODate("+"2017-03-12"+")"). 
             append("$lt","ISODate("+"2017-03-13"+")") 
           ) 
      ); 

但在JS聚集它的"$gte": ISODate("2017-03-13")和BasicDBObject的結果是"$gte": "ISODate(2017-03-13)"所以這是行不通的。

你有什麼想法我怎麼能有相同的JS結果或一個想法,使這場比賽的舞臺,否則?

回答

0

的問題是,您要設置的日期值作爲字符串:

new BasicDBObject("$gte","ISODate("+"2017-03-12"+")") 

你需要創建一個Date對象,然後使用你的比較。類似這樣的:

Date fromDate = LocalDate.parse("2017-03-12").toDate(); 
Date toDate = LocalDate.parse("2017-03-13").toDate(); 

BasicDBObject("$match", 
      new BasicDBObject("date", 
        new BasicDBObject("$gte",fromDate). 
            append("$lt",toDate) 
          ) 
     ); 
+1

謝謝!爲了完成你的答案,我只是添加使用它來生成日期,因爲所有的Java.utils.Date函數都被棄用: 'Date date = LocalDate.parse(「2017-03-13」)。toDate();' 請允許我補充一點,因爲在我的搜索中我沒有找到這個 再次感謝! – Prosor