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

Posted

技术标签:

【中文标题】使用 Spring 数据和 mongoDB 进行日期排序的聚合【英文标题】:Aggregation for sorting with date using Spring data and mongoDB 【发布时间】:2018-02-05 09:48:14 【问题描述】:

我有以下记录,

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

我想要聚合查询的最高日期记录。 是否可以使用 Sort 方法对带有日期的数据记录进行排序? 如果是,我应该如何编写查询? 有没有办法设置特定的日期格式进行排序?

(我使用的是Spring数据和mongoDB组合) 请提出建议。

【问题讨论】:

【参考方案1】:

我不知道春季数据,但我可以建议您使用 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


]

【讨论】:

以上是关于使用 Spring 数据和 mongoDB 进行日期排序的聚合的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 @Query 在日期 Spring 数据 MongoDB 之间进行选择

使用 Spring Security + Spring 数据 + MongoDB 进行身份验证

使用 spring security 和 mongodb 进行 Rest 身份验证

使用 Spring Security、Spring Boot 和 MongoDB 进行密码编码和解码

使用 MongoDB 进行 Spring Boot 数据聚合

使用spring boot在mongodb中进行多个搜索查询