$unset (フィールド削除)
最終更新:2026-10-09
$unset (フィールド削除)
$unset は、ドキュメントから指定したフィールドを削除します。`{ $unset: { age: '' } }` のように書きます — 値はプレースホルダで、通常は空文字列を指定します。ネストしたフィールドにはドット区切りのパスを使い、存在しないフィールドは黙って無視されます。配列要素に対して $unset を使うと要素は削除されず null に設定されます(削除には $pull を使います)。
| カテゴリ | フィールド更新 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $unset: { <field>: '' } }
⚙️ パラメータ
| フィールド | 削除するフィールド。ドット記法を使用できます。 |
|---|---|
| プレースホルダー値 | プレースホルダー値。通常は空文字列。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $unset: age フィールドを削除
db.users.updateOne(
{ _id: 1 },
{ $unset: { age: '' } }
)
// ネストしたフィールドを削除
db.users.updateOne(
{ _id: 1 },
{ $unset: { 'address.city': '' } }
)
出力:
// ドキュメントから age と address.city フィールドが削除される
📌 注意事項
- 配列要素に対しては削除ではなく null が設定される
- $set と対になる: 一方は削除、もう一方は書き込み
- フィールドが存在しない場合は黙って無視される
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$unset は配列要素を削除しますか?
Aいいえ。配列内では位置に null を設定します。要素の削除には $pull を使います。
Qなぜ $unset に値を指定するのですか?
A値はプレースホルダで、通常は空文字列を使います。どの値でも動作は同じです。
Q$unset はネストしたフィールドを削除できますか?
Aはい。ドット区切りのパスで指定します。