举个基本的例子,我有一个架构:
var testSchema = new Schema({
op1 : Number,
op2 : Number
});
我希望有一个“总计”字段,它不会被存储在数据库中,而是在检索后自动计算,并且可能可用于Mongoose的query.sort。
即:
total = op1 + op2
那么使用 myTestModel.find({}).sort(total).execFind(...);
。
这个可行吗?
举个基本的例子,我有一个架构:
var testSchema = new Schema({
op1 : Number,
op2 : Number
});
total = op1 + op2
那么使用 myTestModel.find({}).sort(total).execFind(...);
。
这个可行吗?
MongoDB不允许您使用常规查询计算字段,但是您可以使用聚合框架来实现这一点。您可以像这样操作:
myTestModel.aggregate(
{ $match: {} }, // your find query
{ $project: {
op1: 1, // original fields
op2: 1,
total: { $add: ['$op1', '$op2' ] } // calculated field
} },
{ $sort: { total: 1 } },
// And then the normal Mongoose stuff:
function (err, res) {
}
);