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}}}
])