我有以下记录,
id | date | name
1 | 01/09/2017 | user1
2 | 02/09/2017 | user2
3 | 03/09/2017 | user3
我希望通过聚合查询获得最高日期记录。 是否可以使用Sort方法对数据记录进行日期排序? 如果是,我应该如何编写查询? 有没有办法设置排序的具体日期格式?
(我正在使用Spring数据和mongoDB组合) 请建议。
答案 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
}
}
]