Créez un champ virtuel qui représente une valeur pour les entrées qui doivent être affichées en haut de la liste, puis triez les entrées en fonction de ce champ. Vous pouvez utiliser $addFields
et $cond
opérateurs pour l'accomplir.
L'implémentation ressemblerait à ceci :
// ...
{
"$addFields": {
"isFeaturedSort": {
"$cond": {
"if": {
"$and": {
"publishDate": {
"$gte": ISODate("2019-03-14T00:00:00.000Z"),
},
"$eq": ["isFeatured", true],
},
},
"then": 1,
"else": 0,
},
},
},
},
{
"$sort": {
"isFeaturedSort": -1, // changed
"refreshes.refreshAt": -1,
"publishDate": -1,
"_id": -1,
},
},
// ...
Veuillez noter que $addField
ne fonctionne que dans MongoDB 3.4 et versions ultérieures. De plus, le code des extraits peut contenir des erreurs.