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 的相关文章

随机推荐

  • 感应(异步)电机磁场定向控制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这些操作 现在除了增加了这些常用操作以外还提供了更加丰富的聚合功能 从这一篇开始