$unset(移除字段)
最后更新:2026-10-09
$unset(移除字段)
$unset 从文档中移除指定字段,保留其余所有字段。它是 { $project: { 字段: 0 } } 的简写,可一次移除多个字段,支持点号路径移除内嵌子字段。适合清理敏感字段(如密码、令牌)和中间计算字段。
| 分类 | 核心阶段 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $unset: "<字段名>" } 或 { $unset: [ "<字段1>", "<字段2>" ] }
⚙️ 参数
| 字段 | 要移除的字段名,或字段名数组。 |
|---|
返回值:移除指定字段后的文档流
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $unset:移除敏感字段和内嵌卡号
db.users.aggregate([
{ $unset: ['password', 'token', 'detail.card'] }
])
运行结果:
// 文档不再包含 password、token 和 detail.card
📌 注意事项
- 等价于 $project 的全 0 投影
- 支持点号路径移除内嵌子字段
- 移除多个字段用数组形式更简洁
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$unset 能删内嵌字段吗?
A能,用点号路径如 'detail.card',只删除该子字段。
Q$unset 和 $project 删除字段有何区别?
A无本质区别,$unset 是 { $project: { 字段: 0 } } 的语法糖,多字段删除更简洁。
Q$unset 移除不存在的字段会怎样?
A不报错,文档原样通过。