$pull (一致する要素の削除)
最終更新:2026-10-09
$pull (一致する要素の削除)
$pull は、配列から指定した値に等しい要素、または条件を満たす要素をすべて削除します。`{ $pull: { tags: 'spam' } }` で 'spam' をすべて削除し、`{ $pull: { scores: { $lt: 60 } } }` で 60 未満のスコアをすべて削除します。1 件だけでなく一致するすべてを削除する、配列の掃除に欠かせないツールです。
| カテゴリ | 配列更新 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $pull: { <array field>: <value> | <condition> } }
⚙️ パラメータ
| 配列フィールド | クリーンアップする配列フィールド。 |
|---|---|
| 値または条件 | 等値またはクエリ条件(例: 'spam' または { $lt: 60 })。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $pull: spam タグをすべて削除
db.articles.updateOne(
{ _id: 1 },
{ $pull: { tags: 'spam' } }
)
// 60 未満のスコアを削除
db.students.updateOne(
{ _id: 1 },
{ $pull: { scores: { $lt: 60 } } }
)
出力:
// spam タグと 60 未満のスコアがすべて削除される
📌 注意事項
- 一致する要素を 1 件ではなくすべて削除する
- 条件には演算子($lt、$in、$gt など)を指定できる
- ドキュメントの配列では、そのフィールドに対してマッチングできる
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$pull と $pop の違いは?
A$pull は値や条件で配列のどこからでも削除します。$pop は先頭か末尾しか削除できません。
Q$pull は条件で削除できますか?
Aはい。クエリ演算子が使えます。例: { $pull: { scores: { $lt: 60 } } }
Q$pull は一致する要素をすべて削除しますか、それとも 1 件だけですか?
A一致するすべての要素が削除されます。