Vous pouvez essayer l'agrégation ci-dessous dans 3.6 pour un tri personnalisé.
Utilisez $dateFromParts
pour calculer la date sans l'heure dans $addFields
pour conserver la valeur calculée comme champ supplémentaire dans le document suivi de $sort
trier sur le champ.
$project
avec exclusion pour supprimer le champ de tri afin d'obtenir le résultat attendu.
db.col.aggregate([
{"$addFields":{
"date":{
"$dateFromParts":{
"year":{"$year":"$datetime"},
"month":{"$month":"$datetime"},
"day":{"$dayOfMonth":"$datetime"}
}
}
}},
{"$sort":{"date":-1,"priority":1}},
{"$project":{"date":0}}
])