$bucketAuto (自動バケット)

最終更新:2026-10-09

$bucketAuto (自動バケット)

$bucketAuto は、ドキュメントをほぼ均等な件数のバケットに分配します。境界は値の分布から自動計算され、手動の境界は不要です。granularity は境界を正規の数列にスナップします。各出力ドキュメントの _id は { min, max } の境界オブジェクトです。自動ヒストグラムや分布の概観に最適です。

カテゴリグループ化とウィンドウ
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $bucketAuto: { groupBy: <expression>, buckets: <positive integer>, output: { <field>: <accumulator> }, granularity: <granularity> } }

⚙️ パラメータ

groupByバケットの所属を決定する式。
buckets希望するバケット数。正の整数である必要があります。
outputバケットごとのアキュムレータ(例: $avg、$sum)。
granularity境界用の標準的な数列(例: R5、1-2-5、E12、POWERSOF2)。

戻り値:バケットごとに1つの { _id: { min, max }, count, ... } ドキュメント

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $bucketAuto: 4 つのバケットに分割し、バケットごとの平均を出力
db.scores.aggregate([
  { $bucketAuto: {
    groupBy: '$score',
    buckets: 4,
    output: { avg: { $avg: '$score' } }
  } }
])

出力:

{ "_id": { "min": 0, "max": 45 }, "count": 10, "avg": 22.4 }
{ "_id": { "min": 45, "max": 82 }, "count": 10, "avg": 63.1 }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Qバケット数は正確ですか?
A常にではありません。ドキュメントが少ない、または値が偏っている場合、要求より少ないバケットになることがあります。
Qgranularity パラメータは何をしますか?
A境界を 1-2-5 や E12 のような正規の数列にスナップし、標準的な刻みを実現します。
Q$bucketAuto と $bucket はどちらを使うべきですか?
A手動の境界なしに均等なバケットが欲しいなら $bucketAuto、カスタム境界が必要なら $bucket を使います。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%