簡體   English   中英

如何使用Mongoose中的聚合獲取平均值?

[英]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_countaverage 任何想法如何在貓鼬中實現這一目標?

您可以使用以下匯總

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM