mongo简介——update & findAndModify

2023-11-11

由于发现mongo更新太快,跟我之前所学有很多差异;尤其是聚合操作,比较早的版本只有group和mapreduce两个函数,不支持avg、max、min、sum这些操作,现在除了增加了这些常用操作以外还提供了更加丰富的聚合功能。

从这一篇开始将按照这个url里面的内容介绍:http://docs.mongodb.org/manual/reference/operator/

 

撰写博客的顺序按照第二个页面里面的操作符字母顺序,将分别按照增、删、改、查、聚合四个主题更新博客文章。

在介绍到某个操作关键字时如果相关必要的方法还没有介绍,就插入一篇介绍这个方法的博文。

比如说第一个要介绍的是$addToSet,这个操作符,但是它只能用于update操作,而update在之前的博文中还没有介绍过,于是这一篇就介绍下update的相关参数。下一篇再介绍$addToSet

 

db.COLLECTION_NAME.update({},{},true|false,true|false);

第一个参数是查询选择器,与findOne的参数一样,相当于sql的where子句

第二个参数是更新操作文件,由各种更新操作符和更新值构成,

第三个参数是upsert。如果是true,表示如果没有符合查询选择器的文档,mongo将会综合第一第二个参数向集合插入一个新的文档。

第四个参数是multi。true:更新匹配到的所有文档,false:更新匹配到的第一个文档,默认值

第三第四个参数也可以合并成一个:

db.COLLECTION_NAME.update({},{},{multi:true|false,upsert:true|false});

 

拥有类似事务特性的更新与查询操作——findAndModify.

非常奇怪的是,在上面的链接里面没有找到这个函数的定义。

它是原子性的,会返回符合查询条件的更新后的文档。

一次最多只更新一个文档,也就是条件query条件,且执行sort后的第一个文档。

db.COLLECTION_NAME.findAndModify({query:{},

                                                                update:{},

                                                                remove:true|false,

                                                                new:true|false,

                                                                sort:{},

                                                                fields:{},

                                                                upsert:true|false});

query是查询选择器,与findOne的查询选择器相同

update是要更新的值,不能与remove同时出现

remove表示删除符合query条件的文档,不能与update同时出现

new为true:返回个性后的文档,false:返回个性前的,默认是false

sort:排序条件,与sort函数的参数一致。

fields:投影操作,与find*的第二个参数一致。

upsert:与update的upsert参数一样。

 

不论是update的第二个参数,还是findAndModify的update,在不指定更新操作符的情况下,将会用指定的新值替换旧值。

比如,

use iteye;

db.blog.update({_id:ObjectId('......')},{title:'new title'});

//上面的操作就把指定_id的文档的标题改成了‘new title’

 

如果指定了更新操作符,就可以实现更复杂灵活的更新操作。可以通过更新操作符,增加或减少数值,针对数组类型的属性,做类似队列或栈的操作。单从这一点来说,mongo要比sql数据库强大的多了。

$addToSet:http://runfriends.iteye.com/blog/1830751

$bit:http://runfriends.iteye.com/blog/1831533

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

mongo简介——update & findAndModify 的相关文章

  • 使用 Node.js mongodb 本机调用 db.destroyDatabase 时,什么可能导致“拓扑被破坏”错误?

    我正在使用 Node js Mongodb 本机驱动程序运行一些集成测试 每个测试都涉及连接到数据库 验证它是否尚不存在 例如 没有任何带有文档的集合 运行测试 然后删除数据库 高级代码如下 const runSafeTest functi
  • 以 Rails 形式处理 MongoMapper EmbeddedDocument

    首先 我对一般编程和 Rails 都是新手 我选择 Rails 是因为它看起来是一种很容易上手的语言 对于我的项目 我将 MongoMapper 与 Rails 结合使用 我正在尝试以与文档相同的形式处理嵌入文档 我有以下模型 class
  • 用于全文搜索和 2 亿多条记录的数据库

    我即将创建一个包含至少 2 亿个条目的庞大数据库 数据库需要可使用全文进行搜索 并且速度应该很快 我的数据库从许多不同的数据源获取数据 我需要定期导入新的或更新的数据 将我的所有数据存储在像 mysql 这样的关系数据库中 然后创建一个 n
  • Mongodb 以不区分大小写的方式排序

    我在 Nodejs express 中以 mongodb 作为数据库的一个项目中非常努力地构建 当我使用 sort 获取所有数据时 它以错误的方式返回数据 那么有没有办法按照我的预期得到正确的格式 如下所示 如果我们在数据库中有三个记录 i
  • 如何查看 Realm ObjectId 是否等于 String (JavaScript)

    我正在使用 MongoDB 的 Realm 并尝试查看 ObjectId 是否等于具有相同字符的字符串 我尝试将 ObjectId 转换为字符串 反之亦然 但无论我尝试什么 它都不会将它们视为相等 即使这些值完全相同并且当我记录它们时它们看
  • Mongo 正则表达式用于“不匹配”或反向[重复]

    这个问题在这里已经有答案了 我的 mongo 文档都包含一个名为templateName 有一些包含该值的文档 a SystemDefaultTemplate b SystemDefaultTemplate c SystemDefaultT
  • model.save() 返回无效输出

    我正在使用本文中的 Node js mongodb 和express 对 REST Api 进行简单测试 MERN 第一部分 使用 Node js 和 Express 构建 RESTful API https medium com week
  • 我需要显式关闭连接吗?

    我持有一个实例MongoClient and DB在我的应用程序中 每次我想执行某些操作时 我都会调用getCollection 我想知道是否需要显式关闭连接 就像connection close 在 JDBC 中 强调一下 我只有一个Mo
  • MongoDB - 使用聚合框架或 MapReduce 来匹配文档中的字符串数组(配置文件匹配)

    我正在构建一个可以比作约会应用程序的应用程序 我有一些结构如下的文档 db profiles find pretty id 1 firstName John lastName Smith fieldValues favouriteColou
  • 使用 Mongoose 将数组(“标签”)保存到 MongoDB

    我正在玩 Mongoose 但在保存到数组时遇到问题 例如 我在页面上有一个以逗号分隔的输入字段tags 我从 req body tags 中获取这些内容 删除空格 然后用逗号分隔它们以获得标签数组 现在 如何将该数组保存回我的数据库 我猜
  • Mongodb聚合管道大小和速度问题

    我正在尝试使用 mongodb 聚合查询来连接 lookup 两个集合 然后对连接数组中的所有唯一值进行不同计数 注意 我不一定知道metaDataMap 数组中有哪些字段 键 我不想计算或包含地图中可能存在或不存在的字段 这就是聚合查询看
  • 如何配置 StrongLoop LoopBack MongoDB 数据源以部署到 Heroku

    我正在使用 LoopBack 版本 1 6 并使用以下数据源配置运行本地 mongoDB 服务器进行开发 mongodb defaultForType mongodb connector loopback connector mongodb
  • mongodb/node.js 中单文档并发读写操作的问题

    编辑 6 15我尝试运行相同的代码 在调用之前添加延迟 doSafePush 再次收到 ConcurrencyDBError 时 即执行return when resolve wait delay 35 then function doSa
  • 使用 mongoose 更新 mongoDb 中数组内的对象[重复]

    这个问题在这里已经有答案了 我正在 MongoDB 上工作 以更新 MongoDB 集合中数组内部的对象值 我的收藏就像 id ObjectId 59b7e839200a5c00ee2d2851 player New playesList
  • 如何在 Mongoose 中定义排序函数

    我正在开发一个小型 NodeJS Web 应用程序 使用 Mongoose 访问我的 MongoDB 数据库 我的收藏的简化架构如下 var MySchema mongoose Schema content type String loca
  • 猫鼬查找并删除

    我正在尝试删除满足查询的多个文档 但是 我需要这些文档的数据将它们存储在单独的集合中以实现撤消功能 我让它工作的唯一方法是使用多个查询 Data find query exec function err data Data remove q
  • 使用 or 运算符进行 Morphia 查询

    我想知道如何使用 or 运算符编写 Morphia mongodb 查询我这样写了 mongodb 查询 效果很好 db Inv find or sug id 2 grp id 2 但是当我尝试在吗啡中编写此内容时 我感到很困惑 以下查询是
  • 对开始和结束范围进行分组和计数

    如果我有以下格式的数据 id 1 startDate ISODate 2017 01 1T00 00 00 000Z endDate ISODate 2017 02 25T00 00 00 000Z type CAR id 2 startD
  • 无法解构“undefined”或“null”的属性“user”

    使用 redux 检索用户信息时出错 我想从数据库获取用户信息 姓名 密码和头像地址 然后对其进行编辑 我正在使用nodejs express react redux 和jwt Actions user js import axios fr
  • 如何在猫鼬中使用聚合

    如何在 mongoose 中定义以下 MongoDB 聚合查询 db contacts aggregate group id code Code name Name 查询的目的是获取不同代码和名称的列表 我当前的模型代码是 use stri

随机推荐

  • 感应(异步)电机磁场定向控制MATLAB/Simulink建模

    电机控制系列文章 感应 异步 电机磁场定向控制电流环PI控制参数设计 感应 异步 电机磁场定向控制速度环PI控制参数设计 目录 电机控制系列文章 前言 一 控制器与被控对象的采样周期 二 系统解算器设置 三 被控对象建模 四 控制器建模 1
  • Linux环境打包Qt程序并部署到Docker容器

    Linux环境打包Qt程序并部署到Docker容器 根据项目需要 将UKylin版本的qt应用程序打包并且部署到docker容器中 系统版本 UKylin版本 Ubuntu18 04 Docker镜像 Ubuntu latest 一 打包Q
  • 轴承剥离型故障对应的特征频率

    包络分析技术是轴承早期故障检测和诊断领域的一种非常有效的信号分析技术 这种技术最早由Mechanical Technology 公司于 1970 年代提出 最初叫做高频共振技术 由于这种技术非常有效 很快就获得了广泛的使用 这种技术还被称作
  • Liunx(一)VMware虚拟机安装学习--Liunx学习的准备

    虚拟机安装 初衷 一 安装前的准备 二 虚拟机硬件配置 2 1 打开VMware 选择 创建新的虚拟机 2 2典型安装与自定义安装 2 3 虚拟机兼容性选择 2 4 选择稍后安装操作系统 2 5操作系统的选择 2 6 虚拟机位置与命名 2
  • sqlmap使用教程

    目录 sqlmap基础使用 1 判断是否存在注入 2 判断文本中的请求是否存在注入 3 查询当前用户下的所有数据库 4 获取数据库中的表名 5 获取表中的字段名 6 获取字段内容 7 获取数据库所有用户 8 获取数据库用户的密码 9 获取当
  • 【廖雪峰python入门笔记】tuple_创建

    tuple 1 是另一种有序的列表 中文翻译为 元组 2 tuple 和 list 非常类似 但是 tuple一旦创建完毕 就不能修改了 同样是表示班里同学的名称 用tuple表示如下 t Adam Lisa Bart 创建tuple 创建
  • 小米笔记本电脑Ruby-15.6 2018/2019款【完美黑苹果MacOS 12 Monterey】

    小米笔记本电脑Ruby 15 6 2018 2019 完美黑苹果 MacOS 12 Monterey XiaoMi Book Ruby 15 6 已完美驱动 扬声器 WiFi 蓝牙 触摸板 开关按F9 有线网络 内置读卡器 因影响白果卡蓝牙
  • 【华为OD机试】数组拼接(C++ Python Java)2023 B卷

    题目描述 有多组整数数组 把他们按如下规则拼接成一个新的数组 从每个数组中按顺序取出固定数列的内容 合并到新数组中 已取出的内容将从原始数组中去除 如果该行不足固定长度或者已经为空 则直接取出剩余部分放到新数组中 继续下一行 输入描述 第一
  • 【多模态】8、MDETR

    文章目录 一 背景 二 方法 2 1 DETR 2 2 MDETR 三 效果 3 1 预训练调整后的检测器 3 2 下游任务 论文 MDETR Modulated Detection for End to End Multi Modal U
  • 图标生成器

    https icon wuruihong com 转载于 https www cnblogs com zhaoxinmei 123 p 11083478 html
  • Tensorflow(1)进行多维矩阵的拆分与拼接

    最近在使用tensorflow进行网络训练的时候 需要提取出别人训练好的卷积核的部分层的数据 由于tensorflow中的tensor和python中的list不同 无法直接使用加法进行拼接 后来发现一个函数可以完成tensor的拼接 函数
  • SaToken踩坑记录

    最近在工作过程中频繁使用satoken做权限认证 很好用 但是也带来了一些坑 一 与knife4j搭配使用 问题描述 使用satoken做权限认证后 knife4j的doc html页面无法打开 解决方案 satoken将knife4j的d
  • 使用python自动回复微信消息(基于图像识别无封号风险)

    不同于其他的外挂思路 不使用 itchat 不使用 itchat 不使用 itchat 这个网页登录的渠道已经被微信关闭了 直接正常登录你的电脑微信 然后使用图像识别微信的消息图标 收到消息后可以根据自定义的接口或者字典自动回复消息 这个程
  • 网站下方版权信息的正规写法

    文章目录 格式 其中需注意 一个特别 教科书 版的例子 来自菜鸟教程最下方版权信息 其他写法 写在最后 虹棠包有话说 格式 Copyright 年份 名称 网站首页网址 All Rights Reserved 备案号 其中需注意 年份可以是
  • 计算机信息安全技术课后习题答案3-4章

    目录 第三章 信息认证技术 一 选择题 二 填空题 三 简答题 第四章 计算机病毒 一 选择题 二 填空题 三 简答题 第三章 信息认证技术 一 选择题 身份认证是安全服务中的重要一环 以下关于身份认证的叙述不正确的是 B A 身份认证是授
  • 马来西亚理科大学 计算机 校区,马来西亚理科大学在马来西亚是一个怎样的存在?...

    原标题 马来西亚理科大学在马来西亚是一个怎样的存在 马来西亚理科大学成立于 1969 年 马来西亚理科大学是大马建立的第二所国立大学 也是马来西亚五所研究密集型大学之一 马来西亚理科大学是一所全球排名前 1 的顶尖大学 它的医学 理学 工程
  • 【Unity】虚拟现实 VRTK插件使用教程(六)VR UI (UGUI和VRTK的事件处理机制)

    文章目录 UI 2D UI 画布设置 相机设置 用途 3D UI 画布设置 交互 UGUI事件处理流程 VRTK事件处理流程 VRTK源码解析 UI UI通常按类别分为三种 即2D UI 3D UI 模型UI 2D UI 2D UI固定在屏
  • 设计模式之迭代器模式

    迭代器模式 1 需求 编写程序展示一个学校院系结构 一个学校中有多个院 一个学院中有多个系 效果图 2 解决方案 使用迭代器模式进行遍历 将数据的存储和数据的遍历进行分离 3 迭代器模式的简单介绍 迭代器模式 Iterator Patter
  • 使用sql语句对数据库脱敏

    最近帮领导整理了一下数据库 给数据库的某些字段进行脱敏 现在整理一下 嘻嘻 1 姓名脱敏 update table set 列 REPLACE 列 SUBSTR 列 2 1 姓名脱敏之后的效果 2 手机号脱敏 UPDATE table SE
  • mongo简介——update & findAndModify

    由于发现mongo更新太快 跟我之前所学有很多差异 尤其是聚合操作 比较早的版本只有group和mapreduce两个函数 不支持avg max min sum这些操作 现在除了增加了这些常用操作以外还提供了更加丰富的聚合功能 从这一篇开始