使用Spring数据和mongoDB进行日期排序的聚合

时间:2017-08-28 07:18:35

标签: mongodb spring-data

我有以下记录,

id   | date         | name
1    | 01/09/2017   | user1
2    | 02/09/2017   | user2
3    | 03/09/2017   | user3

我希望通过聚合查询获得最高日期记录。 是否可以使用Sort方法对数据记录进行日期排序? 如果是,我应该如何编写查询? 有没有办法设置排序的具体日期格式?

(我正在使用Spring数据和mongoDB组合) 请建议。

1 个答案:

答案 0 :(得分:0)

我不知道弹簧数据,但我可以建议您使用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
}
}
]