$unset (フィールド削除)
最終更新:2026-10-09
$unset (フィールド削除)
$unset は、ドキュメントから指定したフィールドを削除し、他はすべて保持します。{ $project: { field: 0 } } の省略記法で、複数フィールドを一度に削除でき、ドット記法でネストしたパスも指定できます。パスワードやトークンなどの機密フィールドの除去や、中間フィールドの掃除に便利です。
| カテゴリ | コアステージ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $unset: "<field>" } or { $unset: [ "<field1>", "<field2>" ] }
⚙️ パラメータ
| フィールド | 削除するフィールド名、またはフィールド名の配列。 |
|---|
戻り値:指定したフィールドを削除したドキュメントストリーム
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $unset: 機密フィールドとネストしたカード番号を削除
db.users.aggregate([
{ $unset: ['password', 'token', 'detail.card'] }
])
出力:
// ドキュメントから password、token、detail.card がなくなる
📌 注意事項
- すべて 0 の $project と同じ意味
- ドットパスで埋め込みサブフィールドを削除できる
- 複数フィールドの一括削除には配列形式を使う
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$unset は埋め込みフィールドを削除できますか?
Aはい。'detail.card' のようなドットパスでサブフィールドを指定します。
Q$unset と $project での削除はどう違いますか?
A実質同じです。$unset はゼロ射影の糖衣構文で、多数のフィールドを扱いやすくします。
Q$unset が存在しないフィールドを指定したら?
Aエラーになりません。ドキュメントはそのまま通ります。