$push (配列に追加)
最終更新:2026-10-09
$push (配列に追加)
$push は、配列の末尾に 1 つまたは複数の要素を追加します。`{ $push: { items: 'pen' } }` のように使い、複数の値を一度に追加するには $each と組み合わせます。さらに $position(挿入位置)、$slice(長さの上限)、$sort(並び順)と組み合わせて高度な配列管理ができます。最もよく使われる配列更新演算子です。
| カテゴリ | 配列更新 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $push: { <array field>: <value> } }
⚙️ パラメータ
| 配列フィールド | 追加先の配列フィールド。 |
|---|---|
| 値 | 追加する値、または { $each: [...] } 形式。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $push: 要素を追加
// 重複は許可される
db.carts.updateOne(
{ _id: 1 },
{ $push: { items: 'pen' } }
)
// 複数を一度に追加
// $each が必要
db.carts.updateOne(
{ _id: 1 },
{ $push: { items: { $each: ['book', 'ruler'] } } }
)
出力:
// items に pen、続いて book と ruler が追加される。重複は許可される
📌 注意事項
- デフォルトで末尾に追加する。重複を避けるなら $addToSet
- 複数件の一括追加には $each が必要
- $position/$slice/$sort と組み合わせて位置と長さを制御できる
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$push と $addToSet の違いは?
A$push は追加し、重複を許可します。$addToSet は重複を先に排除します。
Q$push で特定の位置に挿入できますか?
Aはい。$position でインデックスを指定します。
Q$push で配列の長さを制限できますか?
Aはい。$slice を使います。たとえば最新 10 件だけを保持できます。