MongoDB——更新文档详解

2023-05-16

更新文档

//语法
db.collection.update
(
	<query>, //查询条件
	<update>, //更新文档对象,含操作符功能
	{ //可选参数
		upsert: <boolean>,
		multi: <boolean>,
		writeConcern: <document>,
		collation: <document>
	}
)

  1. query:update的查询条件
  2. update:update的更新对象和一些更新的操作符
  3. upsert:可选。如果不存在update的记录,是否插入objNew:true为插入,默认是false,不插入
  4. multi:可选:默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
  5. writeConcern:可选,自定义写出错确认级别
  6. collation:可选,指定特定国家语言的更新归类规则

返回值:
7. 更新成功,返回WriteResult({“nUpdated”: n})对象
8. 更新失败,返回结果中会包含WriteResult.writeConcernError对象字段内容

修改一条简单文档

商品购物单1 -> 商品购物单2 【$set】

db.order.insert({title:"商品购物单1", amout:35, detail:[{name:"苹果", price:22}, {name:"面粉", price:18}]})

db.order.update({title: "商品购物单1"}, {$set: {title:"商品购物单2"}})

在这里插入图片描述

修改商品数量:
$inc:做加法运算,可以是正数、负数,也可以是小数

db.order.update({title: "商品购物单2"}, {$inc: {amout: 5}})

在这里插入图片描述

$mul:做惩罚运算,可以是正数、负数,也可以是小数

db.order.update({title: "商品购物单2"}, {$mul: {amout: 2}})

在这里插入图片描述

修改错误字段的键名:【$rename】

db.order.update({title:"商品购物单2"}, {$rename: {"title": "titleee"}})

在这里插入图片描述

删除一个字段:【$unset】

db.order.update({titleee: "商品购物单2"}, {$unset: {titleee: "商品购物单2"}})

在这里插入图片描述

比较操作符:【$min】【$max】

将$min给出的值与当前文档字段值进行比较,当给定值较小时则修改当前文档值为给定值

db.order.update({title: "商品购物单2"}, {$min: {amout: 50}})

在这里插入图片描述
将$max给出的值与当前文档字段值进行比较,当给定值较大时则修改当前文档值为给定值

db.order.update({title: "商品购物单2"}, {$max: {amout: 50.5}})

在这里插入图片描述

修改一条文档里的数组和嵌套文档

db.order.insert(
	{
		_id: 12,
		title: "商品购物单5",
		amount: 90,
		unit: "元",
		detail: [
			{name: "葡萄", price: 60},
			{name: "面粉", price: 30}
		],
		lasttime: ISODate("2017-06-03 15:48:55"),
		overview: {shop: "钉钉电子商务平台", shopno: 5, address: "地球村"}
	}	
)

对文档里的子文档值进行修改,可以通过主Key.SubKey的组合来实现指定子文档字段对应值的修改;对于数组值的修改,可以通过Key.Number的方式指定修改数组值,
Number从0,1…开始,对应数组的第一个下标、第二个下标…

db.order.update(
  {_id: 12},
  {
    $set: {
      "detail.1": {name:"大米", price: 40}, 
      "overview.address": "北京市"
    }
  }
)

//注意:引入数组或嵌入文档对象时,都需要加引号"",中间用点号隔离

在这里插入图片描述

多文档修改

使用multi选项:
在这里插入图片描述

db.person.update({}, {$set: {age: 20}}, {multi: true})

在这里插入图片描述

增加文档字段

Update命令在特定情况下,可以增加文档的字段,甚至实现insert命令功能。这个特定条件是要修改的文档没有要修改的字段,而且update命令带upsert选项。

db.person.update(
	{name: "jerry"},
	{$set: {weight: 66.2}},
	{upsert: true}
)

collation参数使用

collation: {
	locale: <string>,
	caseLevel: <boolean>,
	caseFirst: <string>,
	strength: <int>,
	numericOrdering: <boolean>,
	alternate: <string>,
	maxVariable: <string>,
	backwards: <boolean><
	normalization <Boolean>
}

在这里插入图片描述

3个更新的简化命令

MongoDB在3.2版开始提供新的经过简化的3种修改命令。

  1. db.collection.updateOne()。与update()唯的区别是命令语法里少了一个multi:<boolean>:选项,也就是updateOne(只适用于符合条件的一条文档的修改任务。
  2. db.collection.updateMany()。与update(唯一的区别是命令语法里少了一个multi:<boolean>选项,也就是updateMany()只适用于符合条件的多条文档的修改任务。
  3. db.collection.replaceOne()。与update()的区别有两处,一个没有multi:<boolean>选项;另外一个在第二个参数(update的)里不能有更新操作符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB——更新文档详解 的相关文章

随机推荐

  • Openwrt无线中继设置并访问外网

    Openwrt无线中继设置并访问外网 本篇博文参考来自 xff1a http blog csdn net pifangsione article details 13162023 配置目标 主路由器使用AP模式发射Wifi从路由器使用Cli
  • 在 Windows 7 中禁用IPv6协议/IPv6隧道

    How to disable certain Internet Protocol version 6 IPv6 components in Windows Vista Windows 7 and Windows Server 2008 ht
  • python matplotlib绘图大全(散点图、柱状图、饼图、极坐标图、热量图、三维图以及热图)...

    2019 7 14晚 matplotlib七种常见图像输出编程大全 七种图形汇总输出如下 xff1a import numpy as np 导入数据结构nmupy模块 import matplotlib pyplot as plt 导入ma
  • 光纤模式分布 matlab,matlab计算单模光纤模式分布(公布源代码及参考文献)

    最近在使用matlab计算单模光纤纤芯模及包层模模场分布时 xff0c 有一些问题一直悬而未决 xff0c 多次咨询原作者后虽解决了部分问题 xff0c 但是余下的问题原作者也不理我了 xff0c 特发此贴以广交学习光纤方面的同学 老师及科
  • Ubuntu下编译安装MySQL5.7

    tar zxvf mysql 5 7 14 tar gz cd mysql 5 7 14 第一步 xff1a cmake DCMAKE INSTALL PREFIX 61 usr local mysql DMYSQL DATADIR 61
  • UNICODE使用的一些知识和技巧

    UNICODE宏和 UNICODE宏的关系 在windows编程中 经常要编译Unicode版本的程序 方法是工程文件的配置中加上UNICODE或者 UNICODE编译条件 那么到底是用哪一个呢 Jeffrey Richter在 Windo
  • cmake 常用命令

    1 使用日期 获取时间 string TIMESTAMP DATE TIME 34 y m d H M 34 获取日期 string TIMESTAMP DATE VERSION 34 m d 34 转载于 https www cnblog
  • QQ2008 msg.db,user.db读取

    Saturday November 27 2010 msg db读取 下载 user db读取 下载 转载于 https www cnblogs com ycdx2001 archive 2010 11 27 1889498 html
  • MongoDB——Mac环境搭建

    1 下载 官网地址 xff1a https www mongodb com 2 解压并配置 解压到 usr local 配置Path xff0c vim打开 bash profile添加export PATH 61 PATH usr loc
  • Django模型

    模型是你的数据的唯一的 权威的信息源 它包含你所储存数据的必要字段和行为 通常 xff0c 每个模型对应数据库中唯一的一张表 1 基础 每个模型都是django db models Model 的一个Python 子类 模型的每个属性都表示
  • 速度之王 — LZ4压缩算法(二)

    LZ4 Extremely Fast Compression algorithm 项目 xff1a http code google com p lz4 作者 xff1a Yann Collet 本文作者 xff1a zhangskd 64
  • dpkg

    dpkg error dpkg status database is locked by another process 无法获得锁 var lib apt lists lock open ubuntu升级错误或强制中断后容易爆出上面两个错
  • html5中加一个链接,HTML5教程—链接的添加方式_HTML5教程_链接添加_HTML5运用_课课家...

    HTML5的强大功能有很多 xff0c 在图像的修改中 xff0c 我们可见其强大 xff0c 然而其中有一个功能仍能可以运用于广告中的 xff0c 因为在广告主的需求中 xff0c 有很多情况下需要在动画中添加一些外部链接 而这份文档就在
  • Django--初始化

    1 Django介绍 它是一个WEB框架 Django 大而全tornado flask 小而精 2 Django安装 https www djangoproject com download 3 创建django程序 手动创建 file
  • ubuntu更换源后报错:W: GPG error: (转载)

    From xff1a http www njava com njava 626 html 更换163源后 xff0c 更新源时出现错误 apt get update W GPG error http extras ubuntu com pr
  • 魔咒词典

    题目描述 哈利波特在魔法学校的必修课之一就是学习魔咒 据说魔法世界有100000种不同的魔咒 xff0c 哈利很难全部记住 xff0c 但是为了对抗强敌 xff0c 他必须在危急时刻能够调用任何一个需要的魔咒 xff0c 所以他需要你的帮助
  • 禁用计算机上的所有鼠标加速,鼠标加速,小编告诉你鼠标加速怎么关

    我们在使用电脑的时候经常都会需要使用到鼠标 xff0c 所以对于鼠标的相关知识我们应该要了解的多一些 所以今天小编就来给你们讲讲鼠标加速要怎么关 xff0c 感兴趣的小伙伴们就接着看下去吧 小伙伴们 xff0c 小编今天来给你们说说关于电脑
  • 位运算之左移右移运算之详解

    先看如下一段左移右移的代码及其结果 xff1a 代码 include 34 stdio h 34 char leftshift char i int n if n lt 0 return 1 return i lt lt n
  • linux安装debian桌面,在Debian 10 Buster上安装Cinnamon桌面环境的方法

    在本文中 xff0c 我们将介绍在Debian 10 Buster 操作系统上安装Cinnamon桌面环境的方法 安装Debian 10 Buster之后 xff0c 可能需要将桌面环境更改为你喜欢的桌面环境 xff0c 默认安装搭载Gno
  • MongoDB——更新文档详解

    更新文档 span class token comment 语法 span db span class token punctuation span collection span class token punctuation span