Mongodb - 猫鼬,通过对两个字段求和进行排序
Posted
技术标签:
【中文标题】Mongodb - 猫鼬,通过对两个字段求和进行排序【英文标题】:Mongodb - mongoose, sort by summing two fields 【发布时间】:2015-07-12 02:23:19 【问题描述】:我有一个这样的数据库架构:
var User = new mongoose.Schema(
...
points:
type: Number
,
extraPoints:
type: Number
,
...
)
好的,当我想对数据库进行排序时,我想要一个将两个字段相加的文件,如下所示:
var newFiled = (points*50 + extraPoints);
所以当我对数据库进行排序时,我会这样做:
model.User.find().sort(newFiled).exec();
我已经检查了汇总,但我不知道汇总后如何对其进行排序。 感谢您的帮助:)
【问题讨论】:
【参考方案1】:在mongodb聚合中,这可以通过$project
操作符来实现。 newField
是通过 $project
运算符管道阶段添加的,$add
算术运算符添加了两个字段。排序是通过$sort
管道步骤完成的:
var pipeline = [
"$project":
"points": 1,
"extraPoints": 1,
"newField": "$add": [ "$points", "$extraPoints" ]
,
"$sort": "newField": 1
];
model.User.aggregate(pipeline, function (err, res)
if (err) return handleError(err);
console.log(res);
);
// Or use the aggregation pipeline builder.
model.User.aggregate()
.project(
"points": 1,
"extraPoints": 1,
"newField": "$add": [ "$points", "$extraPoints" ]
)
.sort("newField")
.exec(function (err, res)
if (err) return handleError(err);
console.log(res);
);
【讨论】:
感谢 looooot :) 我希望我能投票给你两次。 @user3425760 不用担心,很乐意提供帮助:-)以上是关于Mongodb - 猫鼬,通过对两个字段求和进行排序的主要内容,如果未能解决你的问题,请参考以下文章
Mongodb对来自聚合方面的两个相似数据数组进行分组和求和
如何对 MongoDB 集合中字段的不同值求和(利用 mongoose)