我想在Spring数据Mongo中创建这个聚合管道
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 :(得分: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)
)
);