Mongo聚合:在输入中使用新的Date()来形成AggregationExpression

时间:2017-03-16 17:02:52

标签: spring-data-mongodb

是否有人知道如何使用spring mongo投影实现此声明:

timed: {
   $divide: [{ $subtract: [ new Date(), "$created" ] }, 7200000]
}

这样的事情对我不起作用:

ArithmeticOperators.Subtract updated = valueOf("new Date()").subtract("created");

因为valueOf需要字段引用或AggregationExpression

1 个答案:

答案 0 :(得分:1)

你可以尝试下面的舞台。 shell查询中的new Date()是javascript日期函数。您必须使用BasicDBObject将该表达式包装在AggregationExpression中。

 ArithmeticOperators.Divide updated = ArithmeticOperators.Divide.valueOf(aggregationOperationContext -> new BasicDBObject("$subtract", Arrays.asList(new Date(), "$created"))).divideBy(7200000);
 AggregationOperation project = Aggregation.project().and(updated).as("timed");
 Aggregation agg = newAggregation(project);

我无法找到传递类似两个日期参数的方法

valueOf("created").subtract(new Date())