Mongoの集計パイプラインでビジネス上の質問に回答する
使うタイミング: 件数、ファネル、トップNリストが必要だが、$group/$lookup の構文を覚えたくない場合。
前提条件
- 読み取り専用の接続文字列 — Atlas:
readAnyDatabase権限を持つDBユーザーを作成。セルフホスト:対象DBにreadロールを持つユーザーを使用。
フロー
-
コレクションを確認するデータベースを一覧表示し、
app_prod内のすべてのコレクションとおおよそのドキュメント数を表示してください。✓ コピーしました→ コレクションカタログ -
サンプリングしてスキーマを推論する
usersとordersから20件ずつサンプリングし、見つかったフィールドと型を説明してください。✓ コピーしました→ コレクションごとのスキーマ説明 -
実際の集計を実行する過去30日間に国別で何件の注文がありましたか?降順ソートで上位20件を表示してください。✓ コピーしました→ 使用したパイプライン付きの結果テーブル
結果: 再実行可能な正確なパイプラインとともにビジネス上の回答が得られます。
注意点
- インデックスのない集計は巨大なコレクションをフルスキャンする可能性がある — 必ず先に
.explain()で確認し、サポートするインデックスが存在することを確認してください。存在しない場合は、パイプラインの先頭でインデックス付きフィールドに絞った$matchを追加してください