使用Spring数据和mongoDB进行日期排序的聚合
我有以下记录使用Spring数据和mongoDB进行日期排序的聚合,mongodb,spring-data,Mongodb,Spring Data,我有以下记录 id | date | name 1 | 01/09/2017 | user1 2 | 02/09/2017 | user2 3 | 03/09/2017 | user3 我希望通过聚合查询得到最高日期记录。 是否可以使用排序方法对带有日期的数据记录进行排序? 如果是,我应该如何编写查询? 有没有办法设置排序的具体日期格式 (我正在使用Spring数据和mongoDB组合) 请建议。我不知道spring数据,但我可以建议您使用IS
id | date | name
1 | 01/09/2017 | user1
2 | 02/09/2017 | user2
3 | 03/09/2017 | user3
我希望通过聚合查询得到最高日期记录。
是否可以使用排序方法对带有日期的数据记录进行排序?
如果是,我应该如何编写查询?
有没有办法设置排序的具体日期格式
(我正在使用Spring数据和mongoDB组合)
请建议。我不知道spring数据,但我可以建议您使用ISO日期格式以获得日期字段的最佳结果 如果您只需要排序,那么您也可以使用“YYYY/MM/DD”(“2017/12/04”)格式 在您的情况下,我们可以使用“$split”、“$reverseArray”、“$concat”和“$arrayElemAt”
我不知道spring数据,但我可以建议您使用ISO日期格式,以获得日期字段的最佳结果 如果您只需要排序,那么您也可以使用“YYYY/MM/DD”(“2017/12/04”)格式 在您的情况下,我们可以使用“$split”、“$reverseArray”、“$concat”和“$arrayElemAt”
[
{
$addFields:{
date:{$let:{
vars:{rDate:{$reverseArray:{$split:["$date","/"]}}},
in:{
$concat:[{ $arrayElemAt: [ "$$rDate", 0] },"/",{ $arrayElemAt: [ "$$rDate", 1] },"/",{ $arrayElemAt: [ "$$rDate", 2] }]
}
}
}
}},
{
$sort:{
date:1
}
}
]