Anda dapat mencoba agregasi di bawah ini dalam 3.4 untuk pengurutan khusus.
Gunakan $add
untuk menjumlahkan upvote dan downvote di $addFields
untuk menyimpan nilai yang dihitung sebagai bidang tambahan dalam dokumen diikuti oleh $sort
urutkan di lapangan.
$project
dengan pengecualian untuk menghapus bidang pengurutan untuk mendapatkan hasil yang diharapkan.
db.col.aggregate([
{"$addFields":{ "sort_order":{"$add":["$upvotes", "$downvotes"]}}},
{"$sort":{"sort_order":-1}},
{"$project":{"sort_order":0}}
])