$pullAll (指定値の一括削除)
最終更新:2026-10-09
$pullAll (指定値の一括削除)
$pullAll は、配列から指定したリスト内のいずれかの値に等しい要素をすべて削除します。`{ $pullAll: { tags: ['spam', 'ads'] } }` のように使います。$pull と違い、$pullAll は等値マッチのみ対応で条件は使えませんが、複数の値を一度に指定できます(複数値での条件削除は $pull 内で $in を使います)。
| カテゴリ | 配列更新 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $pullAll: { <array field>: [ <value1>, <value2>, ... ] } }
⚙️ パラメータ
| 配列フィールド | クリーンアップする配列フィールド。 |
|---|---|
| 値のリスト | 削除する値。等値一致のみ。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $pullAll: 複数のタグを一度に削除
// 等値マッチのみ
db.articles.updateOne(
{ _id: 1 },
{ $pullAll: { tags: ['spam', 'ads'] } }
)
出力:
// spam と ads のエントリが tags からすべて削除される
📌 注意事項
- 等値マッチのみで、条件は使えない
- 複数の値を一度に指定でき、$pull を補完する
- 存在しない値は黙って無視される
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$pullAll と $pull の違いは?
A$pullAll は複数の完全一致値を削除します。$pull は条件を 1 つずつ指定できます(複数値には $in を使います)。
Q$pullAll は条件に対応していますか?
Aいいえ。等値マッチのみです。
Q複数の値を一度に削除するには?
A$pullAll: { tags: ['a', 'b'] } とします。