MongoDB $rename 给字段一次重新命名的机会
学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第58篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。
在日常编写程序过程中,命名错误是经常出现的错误。拼写错误的单词,大小写字母的错误等。还有另外一种场景,一些字段定义在文档的顶层,而随着项目的进展,开发人员期望将字段移动到文档的嵌套文档当中。
Mongodb的$rename方法,为开发人员提供了字段名称修改的便利。同时该方法也支持嵌套文档字段的移动。
定义
操作符$rename修改字段的名称
语法
{ $rename: {<field1>: <newName1>, <field2>: <newName2>, ...}}
其中,新的字段名称必须与已有字段不同。
在下面的更新语句中,将字段名称nickname更新为字段 alias, 同时将字段cell更新为mobile
db.students.updateOne({_id: 1}, {$rename: {'nickname': 'alias', 'cell': 'mobile'}}
)
行为
当在UPDATE中使用$rename操作时,Mongodb完成了下面的行为
- 使用$unset删除带有原来字段名称的字段和新字段名称的字段。
- 执行$set操作,将字段值和新字段名称添加到文档中。
使用$rename时,对每个文档的操作是原子操作。$rename操作可能不会保留文档中字段排序。支持将字段从嵌套文档中搬入搬出。但不支持文档数组中字段的搬入和搬出。
当文档中存在与新字段名称相同的字段时,文档中已有同名字段会被删除。
重命名文档中不存在的字段时,使用$rename操作不会对文档进行更新。
mongodb 5.0版本以后,向$rename传入空表达式({ })时,mongodb不再抛出错误。空表达式不会修改字段值 ,也不会在oplog中,添加新的操作记录。
应用
构建测试集合students并插入数据。能够看到,插入集合中字段名称"nmae"输入错误。
db.students.insertMany([{"_id": 1, "alias": ["The American Cincinnatus", "The American Fabius"],"mobile": "555-555-5555","nmae": { "first": "george","last": "washington"}}, {"_id": 2, "alias": ["My dearest friend"],"mobile": "222-222-2222","nmae": { "first": "abigail","last": "adams"}}, {"_id": 3, "alias": ["Amazing grace"],"mobile": "111-111-1111","nmae": { "first": "grace","last": "hopper"}}])
构建数据更新语句,修改字段名称。
db.students.updateMany({"nmae": {$ne: null}},{$rename: {"nmae": "name"}})
构建另外一个UPDATE语句,修改嵌套文档中的名称。
db.students.updateOne({_id: 1},{ $rename: {"name.first": "name.fname"}})
修改一个不存在的字段名称。返回结果中修改文档数量为0
db.students.updateOne({_id: 1}, {$rename: {'wife': 'spouse'}})
{"acknowledged" : true,"matchedCount" : 1,"modifiedCount" : 0
}
相关文章:
MongoDB $rename 给字段一次重新命名的机会
学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第58篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。 在日常编写程序过程中,命名错误是经常出现的错误。拼写错误的单词,大小写字…...
OnlyOwner在Solidity中是一个修饰符,TypeError:
目录 OnlyOwner在Solidity中是一个修饰符 TypeError: Data location must be "memory" or "calldata" for parameter in function, but none was given. function AddDOm (address dataOwnermAddress, string dataProduct, string dataNotes) OnlyOwner …...
数据Ant-Design-Vue动态表头并填充
Ant-Design-Vue是一款基于Vue.js的UI组件库,广泛应用于前端开发中。在Ant-Design-Vue中,提供了许多常用的组件,包括表格组件。表格组件可以方便地展示和处理大量的数据。 在实际的开发中,我们经常会遇到需要根据后台返回的数据动…...
验证码案例
目录 前言 一、Hutool工具介绍 1.1 Maven 1.2 介绍 1.3 实现类 二、验证码案例 2.1 需求 2.2 约定前后端交互接口 2.2.1 需求分析 2.2.2 接口定义 2.3 后端生成验证码 2.4 前端接收验证码图片 2.5 后端校验验证码 2.6 前端校验验证码 2.7 后端完整代码 前言…...
python身份证ocr接口功能免费体验、身份证实名认证接口
翔云人工智能API开放平台提供身份证实名认证接口、身份证识别接口,两者的相结合可以实现身份证的快速、精准核验,当用户在进行身份证实名认证操作时,仅需上传身份证照片,证件识别接口即可快速、精准的对证件上的文字信息进行快速提…...
屏幕空间反射技术在AI绘画中的作用
在数字艺术和游戏开发的世界中,真实感渲染一直是追求的圣杯。屏幕空间反射(Screen Space Reflection,SSR)技术作为一种先进的图形处理手段,它通过在屏幕空间内模拟光线的反射来增强场景的真实感和视觉冲击力。随着人工…...
JDK下载安装Java SDK
Android中国开发者官网 Android官网 (VPN翻墙) 通过brew命令 下载OracleJDK(推荐) 手动下载OracleJDK(不推荐) oracle OracleJDK下载页 查找硬件设备是否已存在JDK环境 oracle官网 备注: JetPack JavaDevelopmentKit Java开发的系统SDK OpenJDK 开源免费SDK …...
【ARM Cache 系列文章 1.2 -- Data Cache 和 Unified Cache 的详细介绍】
请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Data Cache and Unified Cache数据缓存 (Data Cache)统一缓存 (Unified Cache)数据缓存与统一缓存的比较小结 Data Cache and Unified Cache 在 ARM架构中,缓存(…...
Debian13将正式切换到基于内存的临时文件系统
以前的内存很小,旅行者一号上的计算机内存只有68KB,现在的内存可以几十G,上百G足够把系统全部装载在内存里运行,获得优异的性能和极速响应体验。 很多小型系统能做到这一点,Linux没有那么激进,不过Debian …...
设计模式-工厂方法(创建型)
创建型-工厂方法 简单工厂 将被创建的对象称为“产品”,将生产“产品”对象称为“工厂”;如果创建的产品不多,且不需要生产新的产品,那么只需要一个工厂就可以,这种模式叫做“简单工厂”,它不属于23中设计…...
分布式事务大揭秘:使用MQ实现最终一致性
本文作者:小米,一个热爱技术分享的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米,一个热爱分享技术的29岁程序员,今天我们来聊聊分布式事务中的一种经典实现方式——MQ最终一致性。这是一个在互联网公司中广…...
【IoT NTN】3GPP R18中关于各类IoT设备在NTN中的增强和扩展
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…...
vs - vs2015编译gtest-v1.12.1
文章目录 vs - vs2015编译gtest-v1.12.1概述点评笔记将工程迁出到本地后,如果已经编译过工程,将工程Revert, Clean up 干净。编译用的CMake, 优先用VS2019自带的打开VS2015X64本地命令行编译gtest工程测试安装自己写个测试工程,看看编译出来的…...
你好GPT-4o——对GPT-4o发布的思考与看法
你好GPT-4o 前言 2024年5月13日,OpenAI官网发布了他们的新一代自然语言处理交互系统——GPT-4o。这是OpenAI继GPT4之后又一个新的旗舰模型。 GPT-4o(“o”代表“omni”)是迈向更自然的人机交互的一步——它接受文本、音频、图像和视频的任意…...
QT 信号和槽 多对一关联示例,多个信号,一个槽函数响应,多个信号源如何绑定一个槽函数
三个顾客 Anderson、Bruce、Castiel 都要订饭,分别对应三个按钮,点击一个按钮,就会弹出给该顾客送饭的消息。注意这个例子只使用一个槽函数,而三个顾客名称是不一样的,弹窗时显示的消息不一样,这需要一些 技…...
宝塔nginx配置
将跟php有关的注释掉: 添加: #解决vue刷新404问题try_files $uri $uri/ /index.html; location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header…...
容器化实践:DevOps环境下的容器交付流程
DevOps的兴起是为了应对市场和消费者对技术应用的不断增长的需求。它的目标是构建一个更快的开发环境,同时保持软件的高质量标准。DevOps还致力于在敏捷开发周期中提升软件的整体品质。这一目标的实现依赖于多种技术、平台和工具的综合运用。 结合容器化技术与DevO…...
Linux---sudo命令
文章目录 目录 文章目录 一.sudo命令简介 二.sudo 命令的特点 三.sudo 相关文件 四.sudo 命令授权配置 一.sudo命令简介 sudo 命令全称“SuperUser Do”,是Linux系统中的一个命令能够使普通用户以超级用户身份去执行某些命令。 二.sudo 命令的特点 sudo能够授权…...
前后端分离与实现 ajax 异步请求 和动态网页局部生成
前端 <!DOCTYPE html><!-- 来源 --> <!-- https://cloud.tencent.com/developer/article/1705089 --> <!-- https://geek-docs.com/ajax/ajax-questions/19_ajax_javascript_send_json_object_with_ajax.html --> <!-- 配合java后端可以监听 --&…...
Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略
Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略 文章目录 Windows系统下CUDA、cuDNN与PyTorch的更新与安装全攻略一、引言二、CUDA、cuDNN与PyTorch-GPU介绍三、安装准备1. 查看支持的CUDA版本2. 查看已安装的CUDA版本3. 查看支持的PyTorch版本 四、卸载旧版CUDA五、下载…...
引用格式错乱导致学术不端?Perplexity官方未公开的4种强制校准法,仅限内部研究员使用!
更多请点击: https://intelliparadigm.com 第一章:Perplexity引用格式设置教程 Perplexity 本身不提供原生的参考文献管理功能,但其生成的回答可导出为 Markdown 或纯文本,便于后续在学术写作中按标准格式(如 APA、ML…...
终极指南:如何用免费3D模型库打造你的Cherry MX个性化键帽
终极指南:如何用免费3D模型库打造你的Cherry MX个性化键帽 【免费下载链接】cherry-mx-keycaps 3D models of Chery MX keycaps 项目地址: https://gitcode.com/gh_mirrors/ch/cherry-mx-keycaps 想为你的机械键盘打造一套独一无二的键帽吗?Cherr…...
企业AI成本为什么总是失控?Token计量与费用归因体系设计
一、问题背景随着企业大规模接入大模型能力,一个普遍现象正在浮现:AI成本正在失控。月初预算批了10万,月底账单来了20万。问财务:钱花哪了?财务说:只知道总额,不知道细节。问IT:哪个…...
GD32F407时钟树详解:168MHz系统时钟如何驱动你的ADC、SPI和CAN?
GD32F407时钟树深度解析:从PLL到外设的168MHz信号之旅 在嵌入式系统设计中,时钟如同芯片的"心跳",精确控制着每个外设的运作节奏。GD32F407这颗基于Cortex-M4内核的MCU,其168MHz的系统时钟如何精准分配到ADC、SPI、CAN等…...
如何在5分钟内快速上手LeRobot机器人AI控制框架:从零到一的完整指南
如何在5分钟内快速上手LeRobot机器人AI控制框架:从零到一的完整指南 【免费下载链接】lerobot 🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 还在为…...
虚假信息注入下异构系统弹性纳什均衡【附代码】
✨ 长期致力于博弈论、分布式纳什均衡、虚假信息注入攻击、线性系统、参数不确定、事件触发研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)虚假信息观…...
learn claude code S12 Worktree 任务隔离详解笔记
S12 Worktree 任务隔离详解笔记基于 s12_worktree_task_isolation.py 源码逐行分析,配合 s12-worktree-task-isolation.md 设计思路。一、问题:多个任务共享一个工作目录,互相踩踏 前面 11 章的 agent 都在同一个工作目录下操作。当只有一个 …...
(B站TinyML教程学习笔记)C8 edge impulse 快速入门+C9 数据提取+C10 运动数据的特征提取
0:06 - 1:00 为什么使用 Edge Impulse 常见机器学习开发方式 传统机器学习通常会使用: TensorFlowScikit-learn 这些框架功能强大,但: 学习成本高需要写大量代码对嵌入式开发者不太友好 Edge Impulse 的作用 Edge Impulse 核心特点&am…...
全球扩张加剧法律复杂性,但仅有7%的企业实现全面合规
• 47%的总法律顾问表示,实际控制人规则对法律运营构成了最大的风险 • 44%的企业对能否满足跨境数据安全要求缺乏信心 随着企业在2026年加速全球扩张,合规工作却未能跟上步伐。事实上,根据全球领先的商业管理与合规解决方案提供商CSC的一项最…...
E-Hentai智能下载器:零成本漫画管理效率革命
E-Hentai智能下载器:零成本漫画管理效率革命 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 你是否曾为下载漫画而烦恼?面对心爱的作品…...
