Puede probar la siguiente agregación en 3.4 para una ordenación personalizada.
Use $add
para sumar los votos positivos y negativos en $addFields
para mantener el valor calculado como campo adicional en el documento seguido de $sort
ordenar por campo.
$project
con exclusión para soltar el campo de clasificación para obtener el resultado esperado.
db.col.aggregate([
{"$addFields":{ "sort_order":{"$add":["$upvotes", "$downvotes"]}}},
{"$sort":{"sort_order":-1}},
{"$project":{"sort_order":0}}
])