對於一個基本的例子,我有一個模式:貓鼬臨時計算字段
var testSchema = new Schema({
op1 : Number,
op2 : Number
});
那麼我想有這不是存儲在數據庫,但自動檢索後計算的「總」領域,可能可用於Mongoose的query.sort。
I.e.
total = op1 + op2
然後用myTestModel.find({}).sort(total).execFind(...);
這可能嗎?
對於一個基本的例子,我有一個模式:貓鼬臨時計算字段
var testSchema = new Schema({
op1 : Number,
op2 : Number
});
那麼我想有這不是存儲在數據庫,但自動檢索後計算的「總」領域,可能可用於Mongoose的query.sort。
I.e.
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) {
}
);
參見:http://mongoosejs.com/docs/api.html#model_Model.aggregate
虛擬域是易與貓鼬:http://stackoverflow.com/a/12982125/95190 – WiredPrairie
但排序沒有:HTTP: //stackoverflow.com/a/13453207/95190。你需要自己做。 – WiredPrairie
@WiredPrairie謝謝!這兩個參考是完美的。 – Manny