我有一個MongoDB的(貓鼬實體),它代表了我的應用程序金融項:兩個和一個查詢中
var mongoose = require('mongoose');
var ObjectId = mongoose.Schema.Types.ObjectId;
var transactionSchema = mongoose.Schema({
description : String,
amount : { type:Number, min:0.01, required:true },
dateEntry : { type:Date, default:Date.now },
dateAdded : { type:Date, default:Date.now },
positive : { type:Boolean, default:false },
category : { type: ObjectId, ref: 'Category' },
user : { type: ObjectId, ref: 'User' }
});
module.exports = mongoose.model('Transaction', transactionSchema);
我想給我的交易的平衡:我的第一種方法是使之和積極的條目,那麼負項的另一總和,最後減去從積極的消極之一:
async.parallel({
totalPositive: function(callback) {
var matcher = baseSearch;
matcher.positive = true;
Transaction.aggregate(
{ $match: matcher },
{ $group: {_id:null,sum:{$sum: '$amount'}} },
function(err,result) {
callback(err,result);
}
);
},
totalNegative: function(callback) {
var matcher = baseSearch;
matcher.positive = false;
Transaction.aggregate(
{ $match: matcher },
{ $group: {_id:null,sum:{$sum: '$amount'}} },
function(err,result) {
callback(err,result);
}
);
}
}, function(err, results) {
if (err) {
return res.json({error:err.message});
}
results.balance = results.totalPositive[0].sum - results.totalNegative[0].sum;
res.json(results);
});
我不知道如果我可以有隻有一個返回的積極和消極之和保存一個查詢。
任何想法?或者這是最好的解決方案? 謝謝
聽起來不錯!我仍然是mongodb的初學者,非常感謝,我會盡力接受答案! – 2014-09-22 10:47:00
@FabioB。很公平。慢慢來。我當時可能有點過於謹慎,並沒有提供足夠的聯繫或解釋。但是現在也添加了。 – 2014-09-22 11:06:41
超好玩!我開始研究聚合框架。 – 2014-09-22 20:17:59