当前位置: 首页 > news >正文

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:""}
})

相关文章:

  • Java面试八股之什么是自动装箱和自动拆箱
  • mac虚拟光驱工具:Daemon Tools for Mac
  • 2024 vite 静态 scp2 自动化部署
  • k8s网络问题以及容器跨宿主机通信原理
  • 代码随想录算法训练营第四天|24. 两两交换链表中的节点 |19.删除链表的倒数第N个节点 | 面试题 02.07. 链表相交 | 142.环形链表II
  • 【python】OpenCV GUI——Mouse(14.1)
  • 17、matlab实现均值滤波、中值滤波、Butterworth滤波和线性相位FIR滤波
  • 基于websocket与node搭建简易聊天室
  • 【数据分析基础】实验numpy、pandas和matplolib
  • Python中的Pandas数据处理与分析
  • Virtualbox 安装 ubuntu + qemu
  • 【WRF理论第四期】namelist.wps文件详述
  • 前端工程化工具系列(十)—— Browserslist:浏览器兼容性配置工具
  • VS环境Python:深度探索与实用指南
  • 在Nginx中配置php程序环境。
  • 10个最佳ES6特性 ES7与ES8的特性
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Computed property XXX was assigned to but it has no setter
  • css属性的继承、初识值、计算值、当前值、应用值
  • express.js的介绍及使用
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • MD5加密原理解析及OC版原理实现
  • React Transition Group -- Transition 组件
  • Sass 快速入门教程
  • SpiderData 2019年2月16日 DApp数据排行榜
  • TCP拥塞控制
  • VUE es6技巧写法(持续更新中~~~)
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Yii源码解读-服务定位器(Service Locator)
  • 翻译:Hystrix - How To Use
  • 判断客户端类型,Android,iOS,PC
  • 前端之React实战:创建跨平台的项目架构
  • 使用Swoole加速Laravel(正式环境中)
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 优化 Vue 项目编译文件大小
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • nb
  • AI算硅基生命吗,为什么?
  • 带你开发类似Pokemon Go的AR游戏
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • !$boo在php中什么意思,php前戏
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • $NOIp2018$劝退记
  • (1)常见O(n^2)排序算法解析
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (3)选择元素——(17)练习(Exercises)
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (分布式缓存)Redis分片集群
  • (十一)c52学习之旅-动态数码管
  • (学习日记)2024.01.19
  • (转)创业家杂志:UCWEB天使第一步
  • ******IT公司面试题汇总+优秀技术博客汇总