2017-08-11 45 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