Você pode tentar a agregação abaixo em 3.4 para classificação personalizada.
Use
$add
para somar os votos positivos e negativos em $addFields
para manter o valor calculado como o campo extra no documento seguido por $classificar
classificar em campo. $project
com exclusão para descartar o campo de classificação para obter a saída esperada. db.col.aggregate([
{"$addFields":{ "sort_order":{"$add":["$upvotes", "$downvotes"]}}},
{"$sort":{"sort_order":-1}},
{"$project":{"sort_order":0}}
])