0

ドキュメントごとに配列を持つコレクションがあります。この配列のサイズの分布を分析するクエリを書きたいと思います。

私が期待している結果は、ハッシュの配列です {size_of_array => count_of_document}

[
  {0 => 101},
  {1 => 79},
  {2 => 46},
  {3 => 19},
  {4 => 8},
  {5 => 2},
  {6 => 1}
]

純粋なMongoとMongoidの両方でこれを書くにはどうすればよいですか?

前もって感謝します!

編集

かなり重複した質問が見つかりました: mongodb 集計フレームワークを使用して、配列の長さでグループ化します

この投稿では、アンワインドとグループを使用して配列の長さをカウントするトリックを悪用することを提案しています。

4

1 に答える 1

4

MongoDB の開発バージョン 2.5.3 では、集計パイプラインに $size 演算子が導入されています。そのバージョンを使用している場合は、次を試すことができます。

db.collection.aggregate( [ { $group: { _id: { $size: "$myArray" }, count: { $sum: 1 } } } ] )

前述のように、$size 演算子は現在、開発/テスト用のバージョン 2.5.3 で利用できます。

私はモンゴイドに慣れていないのではないかと心配しています。

お役に立てれば。

ケイ

于 2013-10-21T22:31:53.270 に答える