Създайте виртуално поле, което представлява стойност за записите, които трябва да се показват в горната част на списъка, след което сортирайте записите въз основа на това поле. Можете да използвате $addFields
и $cond
оператори, които да го постигнат.
Изпълнението би било нещо подобно:
// ...
{
"$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,
},
},
// ...
Моля, обърнете внимание, че $addField
работят само в MongoDB 3.4 и по-нататък. също кодът на фрагментите може да съдържа грешки.