Tạo một trường ảo đại diện cho một giá trị cho các mục nhập sẽ được hiển thị trên đầu danh sách, sau đó sắp xếp các mục nhập dựa trên trường đó. Bạn có thể sử dụng $addFields
và $cond
để hoàn thành nó.
Việc triển khai sẽ giống như sau:
// ...
{
"$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,
},
},
// ...
Vui lòng lưu ý rằng $addField
chỉ hoạt động trong MongoDB 3.4 và hơn thế nữa. do đó mã đoạn mã có thể có lỗi.