$push (配列収集アキュムレータ)
最終更新:2026-10-09
$push (配列収集アキュムレータ)
$push は、$group 中に各ドキュメントの式の結果を配列へ追加していくアキュムレータです。並び順は入力順に従います(通常は安定しません)。グループ内の詳細を 1 つのドキュメントにまとめられ、安定した順序が必要なら先に $sort します。
| カテゴリ | アキュムレータ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $group: { _id: <key>, items: { $push: "$field" } } }
戻り値:グループ内のすべての式結果の配列
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $push: 顧客ごとにアイテムを収集
db.orders.aggregate([
{ $group: { _id: '$cust_id', items: { $push: '$item' } } }
])
出力:
{ "_id": "A123", "items": ["Pen", "Book"] }
📌 注意事項
- 並び順は入力順に追従し、安定は保証されない
- 直前の $sort で並び順を決定論的にできる
- $slice で切り詰め、$addToSet で重複を除去する
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$push の出力順序は安定しますか?
A厳密には保証されません。順序が重要な場合はパイプラインの早い段階で $sort してください。
Q$push と $addToSet の違いは?
A$push は重複を保持します。$addToSet は重複を除去します。
Q最初の数要素だけ集めるには?
A$push の後に $slice を使うか、$group の前に $sort と $limit を使います。