Możesz spróbować poniższej agregacji w 3.4 dla niestandardowego sortowania.
Użyj $add
sumując głosy za i przeciw w $addFields
aby zachować obliczoną wartość jako dodatkowe pole w dokumencie, po którym następuje $sortuj
sortuj według pola.
$project
z wykluczeniem, aby upuścić pole sortowania, aby uzyskać oczekiwany wynik.
db.col.aggregate([
{"$addFields":{ "sort_order":{"$add":["$upvotes", "$downvotes"]}}},
{"$sort":{"sort_order":-1}},
{"$project":{"sort_order":0}}
])