Mongoose:如何使用两个字段对聚合响应进行排序
Posted
技术标签:
【中文标题】Mongoose:如何使用两个字段对聚合响应进行排序【英文标题】:Mongoose: How to sort aggregate response with two fields 【发布时间】:2021-04-20 12:24:05 【问题描述】:我有这个猫鼬查询:
MinutesSpentStudying.aggregate([
$match: connected_user_id: ObjectId(user_id) ,
$project:
minutes_spent_studying: 1,
year: $year: "$date" ,
day: $dayOfMonth: "$date" ,
,
,
$group:
_id:
day: "$day",
year: "$year",
,
total_minutes: $sum: "$minutes_spent_studying" ,
,
,
$sort: _id: 1 ,
]);
它返回这个响应:
[
"_id":
"day": 2,
"year": 2021
,
"total_minutes": 11
,
"_id":
"day": 3,
"year": 2021
,
"total_minutes": 1
,
"_id":
"day": 26,
"year": 2020
,
"total_minutes": 1
,
"_id":
"day": 27,
"year": 2020
,
"total_minutes": 3
,
]
我希望它按年排序,然后按天排序,以便返回 2020 年的结果,然后返回 2021 年的结果。
知道如何配置以达到此结果吗?
【问题讨论】:
【参考方案1】:您可以按多个字段排序,并为嵌套的字段使用点表示法:
$sort:
"_id.year": 1,
"_id.day": 1
Mongo Playground
【讨论】:
以上是关于Mongoose:如何使用两个字段对聚合响应进行排序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MongoDB 中对聚合查询结果进行分页并获得总文档数(Node.js + Mongoose)?