使用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
}
}
]