Mongodb中字段的删除

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第61篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。

本篇文章,探讨UPDATE中的操作符unset。Mongodb数据插入后,开发人员使用unset方法,将冗余的字段删除 。

定义

在UPDATE操作中,使用$unset删除指定字段。注意区分聚合操作中的unset。 在UPDATE中,unset使文档的结构发生变化,会删除文档中的指定字段。而在聚合操作中使用unset,影响的只是投射结果,在返回结果中排除了指定的字段,而不会删除文档中的字段。

语法

复制代码
{$unset:  {<field1>:"", ...}}

其中<field1>后指定的值,不会对字段删除产生影响。删除嵌套文档或数组中的字段时,使用点操作符。

行为

  • 自mongodb5.0开始,UPDATE操作按照字段名称的字典顺序更新字段。当字段中包含数字时,按照数字顺序依次更新字段。当然,对一个文档的多个字段操作,是原子性的。
  • mongodb 5.0版本以后,向$unset传入空表达式({ })时,mongodb不再抛出错误。空表达式不会修改字段值 ,也不会在oplog中,添加新的操作记录。
  • 当指定删除的字段在文档中不存在时,$unset操作无效,不会对数据产生影响。
  • 当使用去匹配数组元素时, unset使用null替换匹配的数组元素而不是删除数组元素。这种行为保证数组大小和数组元素的位置。

应用

创建集合products并插入数据

复制代码
db.products.insertMany([
     { "item": "chisel", "sku": "C001", "quantity": 4, "instock": true },
     { "item": "hammer", "sku": "unknown", "quantity": 3, "instock": true },
     { "item": "nails", "sku": "unknown", "quantity": 100, "instock": true }
    ])

删除匹配查询条件{sku: "unknown"}的第一条数据中的字段quantity, instock.

复制代码
db.products.updateOne({
    sku: "unknown"
}, {
    $unset: {quantity: "", instock:""}
})
相关推荐
雨辰AI7 分钟前
SpringBoot3 整合达梦 DM9 超详细入门实战|从零搭建可直接上线
数据库·微服务·架构·政务
我是一颗柠檬18 分钟前
【MySQL全面教学】MySQL性能优化实战Day13(2026年)
数据库·后端·sql·mysql·性能优化·database
AI人工智能+电脑小能手37 分钟前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
张彦峰ZYF1 小时前
检索增强生成(RAG)系统的基础:全面深入矢量数据库
数据库·大模型·rag
Elastic 中国社区官方博客2 小时前
我们如何在 Elasticsearch Serverless 上将向量搜索吞吐量提升一倍
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生·serverless
一 乐2 小时前
高校实习信息发布网站|基于Spring Boot的高校实习信息发布网站的设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·高校实习信息发布网站
zgl_200537792 小时前
源代码:跨数据库通用SQL语法解析与标注拆解
大数据·数据库·数据仓库·sql·etl·源代码管理
雪度娃娃3 小时前
存储器层次结构——磁盘硬盘存储
服务器·网络·数据库·计算机组成原理
暴力求解3 小时前
Mysql数据库基础
数据库·mysql·操作系统
意倾城4 小时前
MySQL最左前缀匹配原则
数据库·mysql