首页 > 解决方案 > 获取mongodb中一种列值的行总和作为单个输出

问题描述

我正在尝试根据 MongoDB 中列值 work.type 的类型来获取字段“score.number”的总和。它应该为“hw”获取 sum 为 25,并将“cw”作为 5 作为学生“A”的单个输出。有没有办法使用 mongodb 查询来实现它?我也尝试了 $group ,但它似乎没有针对单个学生记录“A”获取工作类型和每个工作类型的总和。

在此处输入图像描述

预期输出:

在此处输入图像描述

标签: mongodbmongodb-queryaggregation-framework

解决方案


$match你应该$group这样使用之后

db.collection.aggregate([
  {
    $match: {
      student: {
        $in: [
          "A"
        ]
      },
      "work.type": {
        $in: [
          "hw",
          "cw"
        ]
      }
    }
  },
  {
    "$group": {
      "_id": {
        "worktype": "$work.type",
        "student": "$student"
      },
      "workScore": {
        "$sum": "$score.number"
      }
    }
  }
])

https://mongoplayground.net/p/qzghM5KoAbp


推荐阅读