Vous pouvez essayer l'agrégation ci-dessous dans 3.4 pour un tri personnalisé.
Utilisez $add
pour additionner les votes positifs et négatifs dans $addFields
pour conserver la valeur calculée comme champ supplémentaire dans le document suivi de $sort
trier sur le champ.
$project
avec exclusion pour supprimer le champ de tri afin d'obtenir le résultat attendu.
db.col.aggregate([
{"$addFields":{ "sort_order":{"$add":["$upvotes", "$downvotes"]}}},
{"$sort":{"sort_order":-1}},
{"$project":{"sort_order":0}}
])