You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写MongoDB查询从关联reviews集合计算各电脑的平均评分

MongoDB查询产品对应关联评价平均评分方案

你可以使用MongoDB的聚合管道结合$lookup关联查询实现需求,完整查询语句如下:

db.computers.aggregate([
  // 关联reviews集合,拉取当前产品对应的所有评价详情
  {
    $lookup: {
      from: "reviews",
      localField: "reviews",
      foreignField: "_id",
      as: "review_list"
    }
  },
  // 格式化输出字段,计算平均评分并保留1位小数
  {
    $project: {
      _id: 0,
      name: 1,
      "Average rating": {
        $round: [ { $avg: "$review_list.rating" }, 1 ]
      }
    }
  }
])

各阶段说明

  • $lookup阶段:将computers集合每条数据的reviews字段(存储评价ID数组)和reviews集合的_id字段匹配,匹配到的所有评价文档会存入新增的review_list数组中
  • $project阶段:指定返回字段,隐藏默认的_id字段,保留产品名称name;通过$avg运算符计算review_list中所有评价的rating字段平均值,再通过$round保留1位小数,和你示例的输出格式对齐

输出示例

运行上述查询后返回结果如下:

[
  { "name": "Gaming PC", "Average rating": 4.3 },
  { "name": "Office PC", "Average rating": 1.0 },
  { "name": "Chromebook", "Average rating": 4.0 }
]

如果你需要直接返回name: "Gaming PC", Average rating: 4.3格式的字符串,可以在聚合管道中新增拼接字段的阶段:

db.computers.aggregate([
  {
    $lookup: {
      from: "reviews",
      localField: "reviews",
      foreignField: "_id",
      as: "review_list"
    }
  },
  {
    $project: {
      _id: 0,
      output: {
        $concat: [
          "name: \"", "$name", 
          "\", Average rating: ", 
          { $toString: { $round: [ { $avg: "$review_list.rating" }, 1 ] } }
        ]
      }
    }
  }
])

内容的提问来源于stack exchange,提问作者JackWeir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:15:04