如何查询时间最长的对象?

时间:2019-06-24 15:28:24

标签: mongodb date

我正在寻找一个查询,该查询将返回具有最长时间段的对象。

例如,集合中的每个条目都具有startDatefinishDate的属性,例如:

id: 1  startDate: 2019-01-22 23:23:47  finishDate: 2019-01-22 20:58:47 
id: 2  startDate: 2019-01-22 23:12:47  finishDate: 2019-01-22 11:58:47
id: 3  startDate: 2019-01-22 23:23:47  finishDate: 2019-01-22 13:58:47 

如何找到endDatestartDate之间时间差最大的2个项目?

1 个答案:

答案 0 :(得分:1)

假设您的日期是String,并且由于它们的格式很好,您可以使用Date的{​​{3}}转换器将它们转换为Mongo 4.0对象。 (对于早期版本,您可以使用$toDate

一旦有了日期,您就可以使用$dateFromString来获得它们的差值,该差值提供两个日期之间的毫秒数。

因此,我们可以使用$subtract(或$addFieldsMongo 4.2开始)将此字段添加到每个文档中,并通过以下方式对所有文档进行排序: $set运算符。

最后,要只保留两个文档中最长的时间,可以应用$sort阶段:

period