我正在尝试获取一个具有不同大小数组的记录数量列表。我想要获得所有记录的数组大小分布,以便我可以构建像这样的直方图:
| *
| *
documents | * *
| * * *
|_*__*__*___*__*___
2 5 6 23 47
Array Size
因此,原始文件看起来像这样:
{hubs : [{stuff:0, id:6}, {stuff:1"}, .... ]}
{hubs : [{stuff:0, id:6}]}`
到目前为止,使用聚合框架和 这里 的一些帮助,我想出了:
db.sitedata.aggregate([{ $unwind:'$hubs'},
{ $group : {_id:'$_id', count:{$sum:1}}},
{ $group : {_id:'$count', count:{$sum:1}}},
{ $sort : {_id: 1}}])
这似乎给了我想要的结果,但速度不太快。我想知道是否有类似的方法可以实现,而不需要进行两个分组调用。这里的语法是错误的,但我试图做的是将计数值放入第一个 _id 字段:
db.sitedata.aggregate([{ $unwind:'$hubs'},
{ $group : {_id:{$count:$hubs}, count:1}},
{ $sort : { _id: 1 }}])