mongodb的更新语句

2023-10-31

MongoDB 使用 update() 和 save() 方法来更新集合中的文档。

update() 方法

update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

实例

我们在集合 col 中插入如下数据:

>db.col.insert({ title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })

接着我们通过 update() 方法来更新标题(title):

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息 > db.col.find().pretty() { "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } >

可以看到标题(title)由原来的 "MongoDB 教程" 更新为了 "MongoDB"。

以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

save() 方法

save() 方法通过传入的文档来替换已有文档。语法格式如下:

db.collection.save( <document>, { writeConcern: <document> } )

参数说明:

  • document : 文档数据。
  • writeConcern :可选,抛出异常的级别。

实例

以下实例中我们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:

>db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Runoob", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 })

替换成功后,我们可以通过 find() 命令来查看替换后的数据

>db.col.find().pretty() { "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Runoob", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 } >

更多实例

只更新第一条记录:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

只添加第一条:

db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

全部添加加进去:

db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

全部更新:

db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一条记录:

db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

转载于:https://www.cnblogs.com/gswang/p/7233716.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongodb的更新语句 的相关文章

  • matplotlib:调整图形窗口大小而不缩放图形内容

    当您调整图形大小时 Matplotlib 会自动缩放图形窗口中的所有内容 通常这是用户想要的 但我经常想增加窗口的大小 为其他东西腾出更多空间 在这种情况下 我希望在更改窗口大小时预先存在的内容保持相同的大小 有谁知道一个干净的方法来做到这
  • 如何生成大型网站的图形站点地图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想为我的网站生成图形站点地图 据我所知 有两个阶段 抓取网站并分析链接关系 提取树形结构 生成视觉上
  • Visual Studio Code:如何使用参数调试 Python 脚本

    我正在使用 Visual Studio Code 来调试 Python 脚本 下列的本指南 https code visualstudio com docs python debugging 我在中设置了参数launch json file
  • 如何使用 Twython 将 oauth_callback 值传递给 oauth/request_token

    Twitter 最近刚刚强制执行以下规定 1 您必须通过oauth callbackoauth request token 的值 这不是可选的 即使您已经在 dev twitter com 上设置了一个 如果您正在执行带外 OAuth 请通
  • Colab 的使用限制持续多久?

    当我对同一帐户的两个笔记本同时使用两个 GPU 约半小时后 Colab 已 12 小时未运行 此消息不断弹出 由于 Colab 中的使用限制 您当前无法连接到 GPU 自从我上次使用 colab 以来已经过去了大约两个小时 但该消息仍然弹出
  • 类型错误:translate() 只接受一个参数(给定 2 个参数)[重复]

    这个问题在这里已经有答案了 我的代码在 python 2 x 版本上运行良好 但是当我尝试在 python 3 x 版本上运行它时 出现错误 主题 需要缩写短信编码中的任何消息 Code def sms encoding data star
  • Scrapy Splash,如何处理onclick?

    我正在尝试抓取以下内容 我能够收到响应 但我不知道如何访问以下项目的内部数据以抓取它 我注意到访问这些项目实际上是由 JavaScript 和分页处理的 这种情况我该怎么办 下面是我的代码 import scrapy from scrapy
  • Scapy:如何将新层(802.1q)插入现有数据包?

    我有一个数据包转储 想要将 VLAN 标记 802 1q 标头 注入到数据包中 怎么做 为了找到答案 我查看了Scapy 插入新层和记录问题 https stackoverflow com q 17259592 1381638 这确实很有帮
  • 如何在python中访问矩阵每个元素的相邻单元格?

    这里 如果两个单元共享边界 则它们被认为是相邻的 例如 A 5 6 4 2 1 3 7 9 8 这里 索引 0 0 的相邻元素位于索引 0 1 和 1 0 处 索引 1 1 的相邻元素位于索引 0 1 1 0 2 1 处 和 1 2 假设你
  • 在 Python 中将嵌套字典位置作为参数传递

    如果我有一个嵌套字典 我可以通过索引来获取键 如下所示 gt gt gt d a b c gt gt gt d a b c 我可以将该索引作为函数参数传递吗 def get nested value d path a b return d
  • 如何使用 Python 实现并行 gzip 压缩?

    使用python压缩大文件 https stackoverflow com questions 9518705 big file compression with python给出了一个很好的例子来说明如何使用例如bz2 纯粹用 Pytho
  • 列表中的“u”是什么意思?

    这是我第一次遇到这种情况 刚刚打印了一个列表 每个元素似乎都有一个u在它前面 即 u hello u hi u hey 它是什么意思 为什么列表的每个元素前面都会有这个 由于我不知道这种情况有多常见 如果您想了解我是如何遇到它的 我会很乐意
  • datetime strftime 不输出正确的时间戳

    下列 gt gt gt from dateutil parser import parse gt gt gt parse 2013 07 02 00 00 00 0000 datetime datetime 2013 7 2 0 0 tzi
  • 如何输入可变的默认参数

    Python 中处理可变默认参数的方法是将它们设置为无 https stackoverflow com a 366430 5049813 例如 def foo bar None bar if bar is None else bar ret
  • 给定一个字符串,如何删除所有重复的连续字母?

    如何从字符串中删除两个连续的字母 例如 a str hii thherre 应该成为 hi there 我尝试这样做 a str join sorted set a str key a str index 但是 我得到 hi ter 是的
  • Matplotlib:检查空图

    我有一个循环加载并绘制一些数据 如下所示 import os import numpy as np import matplotlib pyplot as plt for filename in filenames plt figure i
  • 访问影子 DOM 中的元素

    是否有可能查找 Shadow DOM 中的元素与蟒蛇硒 示例用例 我有这个input with type date
  • scikit-learn kmeans 聚类的初始质心

    如果我已经有一个可以作为初始质心的 numpy 数组 我该如何正确初始化 kmeans 算法 我正在使用 scikit learn Kmeans 类 这个帖子 具有选定初始中心的 k 均值 https stackoverflow com q
  • “yield item”与 return iter(items) 相比有何优点?

    在下面的示例中 resp results 是一个迭代器 版本1 items for result in resp results item process result items append item return iter items
  • 具有重复值的 Sqlite 列

    就说专栏吧aSQLite 数据库的非常重复 始终有相同的 4 个值 其他值可能稍后出现 但不同值的数量将少于 1000 个 VALUES hello world it s a shame to store this str many tim

随机推荐

  • Go + Redis 实现分布式锁

    文章目录 一 前言 1 1 需要对交易订单加锁原因 1 2 加锁方案 二 Go Redis 实现分布式锁 2 1 为什么需要分布式锁 2 2 分布式锁需要具备特性 2 3 实现 Redis 锁应先掌握哪些知识点 2 4 golang 连接r
  • Linux安装MySQL(超详细,附图安装)

    一 安装MySQL服务 1 查看是否已经安装了MySQL rpm qa grep mysql 如果什么都没有 就是还没有装过MySQL 2 下载MySQL安装包 wget i c http dev mysql com get mysql57
  • 项目实战(一)HTML5+CSS3+JS完成前端网站的制作

    css样式 padding 0 margin 0 box sizing border box html body font family segoe UI Tahoma Geneva verdana sans serif line heig
  • c++求数组中最大值最小值

    用algorithm中的 max element min element 这两个函数返回的是位置指针 max element可以获得最大值 1 普通数组用法 include
  • GM(灰度预测模型)

    根据某市1 6月的交通事故数量 建立灰色模型预测GM 1 1 G表示grey M表示model 预测7 8月份的交通事故数量 要求做精度检验 灰色预测的概念 1 灰色系统 白色系统和黑色系统 白色系统是指一个系统的内部特征是完全已知的 既系
  • C++ 继承

    继承允许依据一个类来定义另一个类 为说明继承 首先需要一个基类 当创建一个类时 不需要重新编写新的数据成员和成员函数 只需指定新建的类继承一个已有的类的成员即可 这个已有的类称为基类 新建的类称为派生类 基类 派生类 一个类可以派生自多个类
  • 曲面细分着色器---细分二维四边形

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一 曲面细分 二 细分二维四边形 参考 前言 术语Tessellation 镶嵌 是指一大类设计活动 通常是指在平坦的表面上 用各种几何形状的瓷砖相邻排列以形成图案 它的目
  • [转载]软件测试从零开始

    本文面向软件测试新手 从测试前的准备工作 测试需求收集 测试用例设计 测试用例执行 测试结果分析几个方面给出建议和方法 鉴于国内的软件开发 测试不规范的现状 本文为软件测试新手提供了若干个软件测试的关注点 关键词 软件测试 测试用例 测试需
  • AltiumDesigner20画图不求人13

    很多芯粉都遇到的问题就是AD20启动时间长 需要感觉N久的时间才能启动起来 今天为大家介绍可以提高AD20启动时间的方法八 取消一些相关的元件选择 视频教程 AltiumDesigner画图不求人13 提高AD20运行速度 取消一些元器件
  • nginx源码安装并设置开机自启

    NGINX源码安装 安装编译器和依赖包 openssl 软件包是用于提供网站加密证书服务的程序文件 提 pcre供 Perl 语言兼容的正则表达式库的软件包 root localhost yum y install gcc pcre dev
  • 使用Navicat for Oracle工具连接oracle

    使用Navicat for Oracle工具连接oracle 今天上网的时候偶然发现了一款oracle的客户端的图形化管理和开发工具 当看到这个界面的时候 感觉很舒服 便上网搜了一下这个工具 看百度百科之后感觉很出乎我的意料 这个产品对于许
  • 机器学习实战(十四)——利用SVD简化数据

    机器学习实战 十四 利用SVD简化数据 一 SVD的应用 SVD 奇异值分解 可以实现用小得多的数据集来表示原始数据集 达到去除噪声和冗余信息 以及压缩数据的目的 SVD的主要应用场景有 隐性语义索引 利用奇异值分解可以将文档中的概念或者主
  • 优秀的测试开发需要具备的能力

    最近很多同学在我公众号后台留言 提了很多问题 其中最多的就是如何提升技术能力 目前的就业市场 对测试的技术能力要求越来越高 测试开发岗位逐渐成为了香饽饽 测试开发对技术要求较高 部分同学要么技术基础较差 或没有找到一个很好的学习方法和路径
  • PyInstaller 4.6版本发布及更新内容

    4 6 2021 10 29 特征 添加对 Python 3 10 的支持 5693 Windows onedir默认情况下将清单嵌入到生成的可执行文件中 以避免用户重命名可执行文件时的潜在问题 例如 当用户重命名可执行文件并尝试在重命名之
  • Java开发规范手册(持续更新)

    一 Java开发规范 1 阿里巴巴泰山版java开发手册 pdf https www aliyundrive com s BbQfSbxR5T5 点击链接保存 或者复制本段内容 打开 阿里云盘 APP 无需下载极速在线查看 视频原画倍速播放
  • 为什么有了ERP还需要MES,看完这5点你就明白了

    随时MES项目实施的越来越多 涉及的行业也越来越多 我发现MES和ERP这两者的关系在制造企业中总是会被混淆 ERP实施对于制造企业而言是很关键的 它管理着企业的人力 资源 财务 计划等重要信息 当一个企业已经实施了ERP后 实施MES系统
  • linux nginx配置多站点,nginx配置多个站点的方法

    这里以配置2个站点对应2个不同域名为例 操作环境 ubuntu 16 04 64位 nginx 1 10 3 假设 IP地址 111 111 111 111 域名1 example1 com 放在 www example1 域名2 exam
  • 使用maven引入第三方jar包以及打包

    我们知道 Maven 是通过仓库对依赖进行管理的 当 Maven 项目需要某个依赖时 只要其 POM 中声明了依赖的坐标信息 Maven 就会自动从仓库中去下载该构件使用 但在实际的开发过程中 经常会遇到一种情况 对接第三方厂商 人家给了一
  • 人脸库dlib安装

    yum install gcc gcc c cmake pip3 install dlib i https pypi tuna tsinghua edu cn simple
  • mongodb的更新语句

    MongoDB 使用 update 和 save 方法来更新集合中的文档 update 方法 update 方法用于更新已存在的文档 语法格式如下 db collection update