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