[英]How to get average value using aggregation in Mongoose?
我有一個Mongoose模式,其中一個屬性定義如下:
// Partially removed for brevity.
const recommendationsSchema = new mongoose.Schema({
ratings: [{ category: String, rating: Number }],
}, {
timestamps: true
});
現在,我想獲取集合中的條目總數,以及評分的平均值。 但是,我只想對category
字段等於total
收視率求平均值。 所以類似{ category: 'total' }
。
我試圖做這樣的事情,但似乎沒有用:
[
{
$count: "total_count",
$group: {
avg: { $avg: $ratings.rating }
}
}
]
count
字段似乎返回集合中的總條目,這很好,而且是我想要的。 但是,如何獲得{ category: 'total' }
的評分平均值? 因此,我只想返回兩個字段, total_count
和average
。 任何想法如何在貓鼬中實現這一目標?
您可以使用以下匯總
db.collection.aggregate([
{ "$facet": {
"totalCount": [{ "$count": "count" }],
"averagteRating": [
{ "$match": { "ratings.category": "total" } },
{ "$unwind": "$ratings" },
{ "$match": { "ratings.category": "total" } },
{ "$group": {
"_id": null,
"averageRating": { "$avg": "$ratings.rating" }
}}
]
}}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.