【问题标题】:getting error unknown group operator '$group' in mongoDB在 mongoDB 中获取错误未知组运算符'$group'
【发布时间】:2020-01-17 01:51:16
【问题描述】:

我正在尝试将distinct(not unique)Emp No 计算在同一个department 中,但出现错误

查询失败:未知组运算符“$group”

这是我的代码 https://mongoplayground.net/p/UvYF9NB7vZx

db.collection.aggregate([
  {
    $group: {
      _id: "$Department",
      total: {
        "$group": {
          _id: "$Emp No"
        }
      }
    }
  }
])

预期输出

[
  {
    "_id": "HUAWEI”,
“total”:1
  },
  {
    "_id": "THBS”,
“total”:2
  }
]

THBS有两个不同的Emp NoA10088P2CA20088P2C

HUAWEI只有一个Emp NoA1016OBW

【问题讨论】:

标签: javascript node.js mongodb mongoose mongodb-query


【解决方案1】:

所以$group是Pipeline stage,只能在上层使用。

但是对于您所需的输出,我相信有很多方法, 我们也可以这样做:

db.collection.aggregate([
  {
    $group: {
      _id: {
        dept: "$Department",
        emp: "$Emp No"
      },
      total: {
        "$sum": 1
      }
    }
  },
  {
    $group: {
      _id: "$_id.dept",
      total: {
        "$sum": 1
      }
    }
  }
])

在这里,在第一阶段,我们与 Department 及其 Emp No 分组,并且我们计算每个部门中有多少 Emp No。 [这个计数你可以删除,因为我们没有使用它。]

这个阶段的结果是:

[
  {
    "_id": {
      "dept": "THBS",
      "emp": "A10088P2C"
    },
    "total": 2
  },
  {
    "_id": {
      "dept": "THBS",
      "emp": "A20088P2C"
    },
    "total": 1
  },
  {
    "_id": {
      "dept": "HUAWEI",
      "emp": "A1016OBW"
    },
    "total": 3
  }
]

接下来在这部分数据之上,我再次与部门分组。它来自$_id.dept,并以相同的方式进行计数,从而以您所需的格式给出结果。

[
  {
    "_id": "HUAWEI",
    "total": 1
  },
  {
    "_id": "THBS",
    "total": 2
  }
]

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2012-08-11
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多