我有这个文件:
{ "_id": "59b804e1ee8a4071a5ea3fcc","description" : "description","imagepath" : "https://example.com","type" : "label","downVotes" : -25,"upVotes" : 15,"language" : "en","approoved" : true },{ "_id": "59b804e1ee8a4071a5ea4dfd","downVotes" : 0,"upVotes" : 30,"approoved" : true }
如何通过upVotes&的总和对这两个对象进行排序downVotes值?
(id为59b804e1ee8a4071a5ea4dfd的对象应首先出现,依此类推)
我试图聚合
{"$group" : { _id:{upVotes:"$upVotes",downVotes:"$downVotes"},count:{$sum:1} }}
但它将所有类似的文件分组.我无法弄清楚聚合过程/语法.
编辑:根据Veeram的回答,这里是使用mongoose的工作代码,万一有人掉到这里:
Labels.aggregate([ {"$addFields":{ "sort_order":{"$add":["$upVotes","$downVotes"]}}},{"$sort":{"sort_order":-1}},{"$project":{"sort_order":0}} ]).exec(function (err,labels) { if (err) { return res.status(404).json({ error: err }); } res.status(200).json(labels); });