Bạn có thể thử tổng hợp dưới đây trong 3,4 để sắp xếp tùy chỉnh.
Sử dụng $add
để tổng hợp số phiếu tán thành và phiếu phản đối trong $addFields
để giữ giá trị được tính toán làm trường bổ sung trong tài liệu, theo sau là $sort
sắp xếp trên thực địa.
$project
với loại trừ để bỏ trường sắp xếp để có được kết quả mong đợi.
db.col.aggregate([
{"$addFields":{ "sort_order":{"$add":["$upvotes", "$downvotes"]}}},
{"$sort":{"sort_order":-1}},
{"$project":{"sort_order":0}}
])