さまざまなサイズの配列を持つレコードの数のリストを取得しようとしています。すべてのレコードの配列サイズの分布を取得したいので、次のようなヒストグラムを作成できます。
| *
| *
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}}])
これにより、私が望む結果が得られるようですが、それほど高速ではありません。このように、2 つのグループ通話を必要としないようなことができるのではないかと考えています。ここでは構文が間違っていますが、最初の _id フィールドにカウント値を入れようとしています。
db.sitedata.aggregate([{ $unwind:'$hubs'},
{ $group : {_id:{$count:$hubs}, count:1}},
{ $sort : { _id: 1 }}])