$unset (Remove Fields)

Last updated: 2026-10-09

$unset (Remove Fields)

$unset removes specified fields from documents, keeping everything else. It is shorthand for { $project: { field: 0 } } and can remove multiple fields at once, including nested paths via dotted notation. Handy for scrubbing sensitive fields like passwords or tokens and cleaning up intermediate fields.

CategoryCore Stages
MongoDB Version1.0+
Example Languagemongosh (Shell)

📝 Syntax

{ $unset: "<field>" } or { $unset: [ "<field1>", "<field2>" ] }

⚙️ Parameters

fieldA field name, or an array of field names, to remove.

Returns:Document stream with the specified fields removed

▶ Example

Run the commands below in your local mongosh (requires a running mongod):

// $unset: remove sensitive fields and a nested card number
db.users.aggregate([
  { $unset: ['password', 'token', 'detail.card'] }
])

Output:

// Documents no longer carry password, token, or detail.card

📌 Notes

More hands-on cases coming soon.

📚 Related Tutorials

❓ FAQ

QCan $unset remove embedded fields?
AYes, with dotted paths like 'detail.card' to target one sub-field.
QHow does $unset differ from deleting fields with $project?
ANo real difference; $unset is syntactic sugar for the zero-projection, cleaner for many fields.
QWhat if $unset targets a missing field?
ANo error; the document passes through unchanged.
Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏