Bạn có thể thử tổng hợp dưới đây trong 3.6 để sắp xếp tùy chỉnh.
Sử dụng $dateFromParts
để tính ngày mà không có thời gian trong $addFields
để giữ giá trị được tính toán làm trường bổ sung trong tài liệu, theo sau là $sort
sắp xếp trên thực địa.
$project
với loại trừ để bỏ trường sắp xếp để có được kết quả mong đợi.
db.col.aggregate([
{"$addFields":{
"date":{
"$dateFromParts":{
"year":{"$year":"$datetime"},
"month":{"$month":"$datetime"},
"day":{"$dayOfMonth":"$datetime"}
}
}
}},
{"$sort":{"date":-1,"priority":1}},
{"$project":{"date":0}}
])