我得到了以下型號貓鼬:貓鼬計算平均
var MobileAppSchema = mongoose.Schema({
identifier: String,
...
});
var RecordingSchema = mongoose.Schema({
... ,
app: {
type: mongoose.Schema.Types.ObjectId,
ref: 'MobileApp'
},
length: Number,
...
});
現在,我得到MobileAppSchema的一些記錄,我想在那裏Recording.app等於我MobileApps的一個所有RecordingSchemas。對於所有獲取的文檔,我想獲得Recording.length的平均值。
我目前的做法,但我想直接聚合貓鼬查詢,而不是之後。
當前實現:
exports.averageTimeSpentForAppIdentifier = function(appIdentifier, done) {
mobileAppsForAppIdentifier(appIdentifier, function(err, mobileApps) {
if(err) {
return done(err);
}
var appIds = mobileApps.map(function(mobileApp) {return mobileApp._id;});
Recording.find({
'app': { $in: appIds}}, function(err, recordings) {
if(err) {
return done(err);
}
if(!recordings || recordings.length == 0) {
return done(null, 0);
}
var average = recordings
.map(function(recording,i,arr) {
return recording.length/arr.length
})
.reduce(function(a,b) {
return a + b
});
done(null, average);
});
});
};
而你的問題是什麼?因爲即使是天真的搜索,也能找到相當數量的結果來解釋如何計算mongodb中的聚集。 – Tomalak