2017-04-26 60 views
0

我目前正在对春数据蒙戈DB,我想知道是否有弹簧地板和小区的春数据蒙戈DB任何实现

我有下面的查询:

db.event.aggregate([{$项目:{ “isActive”:1, “diff_msecs”:{$减去: “$的startDate”,新ISODate()]}}} ,{$ project:{“isActive”:1,“diff_msecs”:1,“diff_days”:{$ floor:{$ divide:[“$ diff_msecs”,1000 * 60 * 60 * 24]}}}},{ $ match:{“isActive”:false,“diff_days”:1}}]);

,并需要解释$地板弹簧数据聚合

回答

0

可以使用弹簧蒙戈数据1.5.2.RELEASE版本试试下面的聚集。

ArithmeticOperators.Floor floor = ArithmeticOperators.Floor.floorValueOf(ArithmeticOperators.Divide.valueOf("diff_msecs").divideBy(1000 * 60 * 60 * 24)); 
ProjectionOperation project1 = Aggregation.project("isActive").and(aggregationOperationContext -> new BasicDBObject("$subtract", Arrays.asList("$startDate", new Date()))).as("diff_msecs"); 
ProjectionOperation project2 = Aggregation.project("isActive", "diff_msecs").and(floor).as("diff_days"); 
MatchOperation match = Aggregation.match(Criteria.where("isActive").is(false).and("diff_days").is(1)); 
Aggregation agg = newAggregation(project1, project2, match); 

旁注:您可以将过滤器的isActive$match一部分作为管道的第一阶段。如果你不这样做,MongoDB会优化并将其移动到顶端。