Możesz spróbować poniższej agregacji w 3.6 dla niestandardowego sortowania.
Użyj $dateFromParts
aby obliczyć datę bez czasu w $addFields
aby zachować obliczoną wartość jako dodatkowe pole w dokumencie, po którym następuje $sortuj
sortuj według pola.
$project
z wykluczeniem, aby upuścić pole sortowania, aby uzyskać oczekiwany wynik.
db.col.aggregate([
{"$addFields":{
"date":{
"$dateFromParts":{
"year":{"$year":"$datetime"},
"month":{"$month":"$datetime"},
"day":{"$dayOfMonth":"$datetime"}
}
}
}},
{"$sort":{"date":-1,"priority":1}},
{"$project":{"date":0}}
])