我正在寻找一个查询,该查询将返回具有最长时间段的对象。
例如,集合中的每个条目都具有startDate
和finishDate
的属性,例如:
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
如何找到endDate
和startDate
之间时间差最大的2个项目?
答案 0 :(得分:1)
假设您的日期是String
,并且由于它们的格式很好,您可以使用Date
的{{3}}转换器将它们转换为Mongo 4.0
对象。 (对于早期版本,您可以使用$toDate
)
一旦有了日期,您就可以使用$dateFromString
来获得它们的差值,该差值提供两个日期之间的毫秒数。
因此,我们可以使用$subtract
(或$addFields
以Mongo 4.2
开始)将此字段添加到每个文档中,并通过以下方式对所有文档进行排序: $set
运算符。
最后,要只保留两个文档中最长的时间,可以应用$sort
阶段:
period