0
我需要計算一個物品的等級平均,並且評級是對象如何讓貓鼬/節點評級平均值(隨着評級對象的數組)
這裏的數組是我的架構/模型:
module.exports = mongoose.model('Article', {
title : String,
text : String,
star : { type: Number, default: 3.5}
...
});
var userSchema = mongoose.Schema({
email : String,
password : String,
name : String,
rating : {type : Array, default: []}
});
module.exports = mongoose.model('User', userSchema);
其中評級陣列對象像{ "rate" : "X", "articleID" : "Y" }
現在,在這個函數I需要計算評級平均
function recalculateArticleRate(articleIDD) {
console.log("Recalculate article rate");
User.aggregate([
{ $match: { "rating.articleID" : articleIDD } },
{ $unwind: "$rating" },
{ $group : {_id : "$_id", avgRate : { $avg : "$rating.rate" } } }
], function (err, result) {
if (err) {
console.log(err);
return;
}
console.log(result);
});
}
這是結果對象:
[ { _id: 58f519acfcb29003b572048b, avgRate: 3 },
{ _id: 58f5093159c45002f10ea7da, avgRate: 3 } ]
這樣做,我得到的所有用戶evalutation的平均水平,但我希望所有用戶在rating.articleID = articleIDD的評分的平均值。 我如何用貓鼬做到這一點?
[MongoDB - 計算對象的嵌套數組屬性的平均值]的可能重複(http://stackoverflow.com/questions/34159487/mongodb-calculating-average-of-nested-array-of-objects-attributes) – Veeram
用'{$ group:{_id:null,avgRate:{$ avg:「$ rating.rate」}}}替換您的小組賽段。 – Veeram