Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB聚合管道以获取每个不同状态的员工数量_Javascript_Mongodb_Aggregation Framework - Fatal编程技术网

Javascript MongoDB聚合管道以获取每个不同状态的员工数量

Javascript MongoDB聚合管道以获取每个不同状态的员工数量,javascript,mongodb,aggregation-framework,Javascript,Mongodb,Aggregation Framework,我试图显示每个州的员工总数,仅适用于美国的公司。 所以看起来是这样的,但对于数据集中包含的所有状态:(样本数) A有一个文档集合,其结构如下: 我的第一步是简单地使用$match,只获取具有office.country_代码“USA”的公司。 现在我需要统计每个州的所有员工并将他们分组。我还需要列出每个州,不要重复。我尝试了$group,但嵌套的Office数组给我带来了麻烦。在某些情况下,有些公司在办公室阵列中有多个办公室 我想我的第一步应该是使用$group显示不同的状态。当office

我试图显示每个州的员工总数,仅适用于美国的公司。 所以看起来是这样的,但对于数据集中包含的所有状态:(样本数)

A有一个文档集合,其结构如下:

我的第一步是简单地使用$match,只获取具有office.country_代码“USA”的公司。 现在我需要统计每个州的所有员工并将他们分组。我还需要列出每个州,不要重复。我尝试了$group,但嵌套的Office数组给我带来了麻烦。在某些情况下,有些公司在办公室阵列中有多个办公室

我想我的第一步应该是使用$group显示不同的状态。当offices.state_代码嵌套在一个数组元素中,并且有时有多个数组元素时,如何获得不同的状态列表


希望这是有道理的。谢谢。

您需要使用
$unwind
操作员将
办公室展平

db.collection.aggregate([
  {
    $unwind: "$offices"
  },
  {
    $match: {
      "offices.country_code": "USA"
    }
  },
  {
    $group: {
      _id: "$offices.state_code",
      employees: {
        $sum: "$number_of_employees"
      }
    }
  },
  {
    $sort: {
      _id: 1
    }
  }
])

您能否将样本数据作为
文本发布?您也可以像这样使用沙盒和发布共享链接?是的,谢谢。现在,让我们检查一下您想要得到什么。是的,我需要按州显示所有在美国设有办事处的公司的员工总数。因此,我需要使用$group获得我假设的每个唯一州,然后以某种方式计算这些州的员工人数($sum?),最后显示结果。每家公司的嵌套和多个办公室让我感到困惑。看一看。现在,你需要做什么?谢谢,我完全忘记了$REWIND,这会节省我很多时间。尽管这仍然没有道理,为什么公司只有员工而不是每个办公室。导致重复。。。谢谢你。
db.collection.aggregate([
  {
    $unwind: "$offices"
  },
  {
    $match: {
      "offices.country_code": "USA"
    }
  },
  {
    $group: {
      _id: "$offices.state_code",
      employees: {
        $sum: "$number_of_employees"
      }
    }
  },
  {
    $sort: {
      _id: 1
    }
  }
])