$unset(删除字段)
最后更新:2026-10-09
$unset(删除字段)
$unset 从文档中删除指定字段。`{ $unset: { age: '' } }`,值可为任意占位(通常写空字符串)。嵌套字段用点路径删除。字段不存在时静默忽略。注意:在数组元素中 $unset 不是删除元素而是把值置为 null(删除数组元素用 $pull)。
| 分类 | 更新字段 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $unset: { <字段>: '' } }
⚙️ 参数
| 字段 | 要删除的字段名,支持点路径。 |
|---|---|
| 占位值 | 任意占位符,通常为空字符串。 |
返回值:更新结果文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $unset:删除 age 字段
db.users.updateOne(
{ _id: 1 },
{ $unset: { age: '' } }
)
// 删除嵌套字段
db.users.updateOne(
{ _id: 1 },
{ $unset: { 'address.city': '' } }
)
运行结果:
// 文档中 age 与 address.city 字段被删除
📌 注意事项
- 数组元素内 $unset 置为 null 而非删除
- 与 $set 相反:一个删除字段,一个写入字段
- 字段不存在时静默忽略
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$unset 删除数组元素吗?
A不删除。数组内 $unset 把对应位置置为 null;删除元素用 $pull。
Q$unset 值为什么要写?
A值只是占位符,常用空字符串,任何值效果相同。
Q$unset 能删嵌套字段吗?
A能,用点路径。