Java 如何获得Mongo标准中两个日期值之间的差异?

Java 如何获得Mongo标准中两个日期值之间的差异?,java,spring,mongodb,spring-mvc,criteria,Java,Spring,Mongodb,Spring Mvc,Criteria,如何获得Mongo标准中两个日期值之间的差值,返回值必须是两个日期的差值(即2015年1月10日第一个日期和2015年1月20日第二个日期),我需要值为10?有谁能帮助我如何使用spring framework critieria在java中实现这一点吗?在本文中,您可以使用和expression获得两个日期值之间的差异: .andExpression("endDateTime - startDateTime").as("duration") 例如(未经测试): 我建议您使用算术运算,而不是在

如何获得Mongo标准中两个日期值之间的差值,返回值必须是两个日期的差值(即2015年1月10日第一个日期和2015年1月20日第二个日期),我需要值为10?有谁能帮助我如何使用spring framework critieria在java中实现这一点吗?

在本文中,您可以使用
和expression
获得两个日期值之间的差异:

.andExpression("endDateTime - startDateTime").as("duration")
例如(未经测试):


我建议您使用算术运算,而不是在投影管道内使用减法运算

ProjectionOperation projectionOperation=Aggregation.project().and(Subtract.valueOf(Date.from(Instant.now())).subtract("fieldname"));

Substract.valueOf
数字
字符串
作为参数,而不是
日期
。这不起作用
arithmetricoperators.Subtract.valueOf
接受
String
AggregationExpression
Number
db.collection.aggregate( {$match:{ your-match } },
     { $group : { 
         _id : "$userId",
         duration : { $subtract:["$endDateTime", "$startDateTime"]}},
     } } );
ProjectionOperation projectionOperation=Aggregation.project().and(Subtract.valueOf(Date.from(Instant.now())).subtract("fieldname"));