Mongodb 如何获得所有文档中数组中每个项的出现次数的总和?

Mongodb 如何获得所有文档中数组中每个项的出现次数的总和?,mongodb,mongoose,Mongodb,Mongoose,我想获得数组中所有项目在所有文档中出现的聚合/计数。我试着查找一些例子,但似乎没有一个能准确地描述这个场景,或者以一种非常迟钝的方式来描述它 下面是我正在使用的文档模型的一个简单概念。每个对象中的itemIds数组始终是唯一的(无重复值): 我需要对每一项的计数进行汇总(不必是这样精确的格式,只需给出我需要的大致概念): 请试试这个: db.yourCollection.aggregate([ {$project : {'itemIds' : 1, _id :0}}, {$unwind

我想获得数组中所有项目在所有文档中出现的聚合/计数。我试着查找一些例子,但似乎没有一个能准确地描述这个场景,或者以一种非常迟钝的方式来描述它

下面是我正在使用的文档模型的一个简单概念。每个对象中的
itemIds
数组始终是唯一的(无重复值):

我需要对每一项的计数进行汇总(不必是这样精确的格式,只需给出我需要的大致概念):

请试试这个:

    db.yourCollection.aggregate([
{$project : {'itemIds' : 1, _id :0}},
{$unwind : '$itemIds'}, 
{$group : {'_id': '$itemIds', count :{$sum :1}}}
])

提供更多信息。那些数组总是由唯一的数字组成吗?是的,我会更新问题我有点困惑。您正在更改文档的结构。
itemIds
数组是我正在访问的模型的根级别项。我尝试了那个查询,但它不起作用。@BRET84C:好的,您可以在ItemId上展开并在ItemId上分组,然后您将获得所需的输出,让我更新我的答案!!这成功了!我真的需要花上几天的时间来理解Mongo聚合,但这肯定有助于我在目前正在进行的项目中顺利进行,并帮助我更好地理解基本级别的聚合。谢谢大家!@BRET84C:如果你想学习mongo:,请查看这个,这些是免费的,直接来自mongoDB,是学习的最佳方式/地点。我一定会去看看。非常感谢。你可以给别人小费。我想请你喝杯啤酒。
{
    itemsCount:[
        {
           itemId:3,
           count:2
        },
        {
           itemId:4,
           count:3
        },
        {
           itemId:6,
           count:1
        },
        {
           itemId:8,
           count:1
        },
        {
           itemId:9,
           count:1
        },
        {
           itemId:12,
           count:3
        }
    ]
}
    db.yourCollection.aggregate([
{$project : {'itemIds' : 1, _id :0}},
{$unwind : '$itemIds'}, 
{$group : {'_id': '$itemIds', count :{$sum :1}}}
])