[转]MongoDB更新操作replaceOne()实例讲解
最近正在学习MongoDB,作为数据库的学习当然是要从CRUD开始学起了。这篇文章默认读者是知道如何安装MongoDB、如何运行MongoDB实例以及了解了MongoDB中的collection、document等相关的概念。
网上对于MongoDB的增删改查操作的文章不少。但是不少都是旧版本的操作操作说明。MongoDB在3.2版本之后,增删改查的命令发生了一些变化。有写变化网上可以找得到,这句话说完想必大家也都知道后面我想说什么了。是的,就是关于replaceOne()这个方法的。目前为止,我还没有发现一篇比较满意的中文教程。这里就记录一下自己学习replaceOne()的一些心得。
以下的演示都是在ROBO 3T中操作完成的。
首先介绍一下replaceOne()这个函数,它主要是起到更新的作用,除此之外还有一些别的作用。我们来看例子。创建一个restaurant集合,包含了以下数据:
//restaurant集合包含以下数据
{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
我们想尝试replace一个文档,文档属性name的值是"Central Perk Cafe",我们想把这个饭店的地点修改成“NewYork”
db.restaurant.replaceOne(
{name:"Central Perk Cafe"},
{name:"Central Perk Cafe", Borough:"NewYork"}
)
//匹配并修改成功
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
//如果没有匹配到这个文档,例如我们传入了错误的name值
{ "acknowledged" : true, "matchedCount" : 0, "modifiedCount" : 0 }
replaceOne()还可以传入参数UpSert,来看下面这个例子:
db.restaurant.replaceOne(
{name:"Pizza Rat's Pizzaria"},
{"_id":4, name" : "Pizza Rat's Pizzaria", "Borough" : "Manhattan", "violations" : 8 },
{upsert:true}
)
//执行结果
{
"acknowledged" : true,
"matchedCount" : 0,
"modifiedCount" : 0,
"upsertedId" : 4
}
当没有匹配到带有这个name属性文档的时候,由于传入了upser参数,Mongo就自动为我们创建了这个文档。这里为了对应前面的_id格式,我们显式的指定了这个文档的id是4,当然也可以交由MongoDB自动为我们生成。
再来看replaceOne()的另外一个参数:Collation,我们首先添加一些测试数据
{ _id: 10, category: "café", status: "A" },
{ _id: 20, category: "cafe", status: "a" },
{ _id: 30, category: "cafE", status: "a" }
db.restaurant.replaceOne(
{ category: "cafe", status: "a" },
{ category: "cafÉ", status: "Replaced" },
{collation:{locale:"fr",strength:1}}
)
replaceOne()不仅替换了"cafÉ"的status,还进行了排序操作。
来源:https://www.2cto.com/database/201804/738609.html
[转]MongoDB更新操作replaceOne()实例讲解的更多相关文章
- MongoDB——更新操作(Update)c#实现
c#实现 Mongodb存储[文档局部更新] 如下: 递归更新字段 ,构建UpdateDefinition /// <summary> /// 构建更新操作定义 /// &l ...
- mongodb更新操作
除了查询条件,还可以使用修改器对文档进行更新. 1. $inc > db.tianyc03.find() { "_id" : ObjectId("50ea6b6f1 ...
- Hive操作语句实例讲解(帮助你了解 桶 bucket)
http://blog.sina.com.cn/s/blog_66474b16010182yu.html这篇可以较好地理解什么是外部表external #创建表人信息表 person(String ...
- mongodb 更新操作
db.aaaa.update({},{$push:{money:{$each:[8,9,10],$slice:-4}}}) db.aaaa.update({},{$addToSet:{money:{$ ...
- 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式
1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...
- MongoDB 文档的更新操作
在MongoDB中,更新单个doc的操作是原子性的.默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的 ...
- java操作mongodb——更新数据
Java中可以通过updateOne,updateMany,replaceOne方法进行集合的文档更新.但是 _id 是不能更新的 updateOne只会更新一条数据,即使通过Filters.lt(& ...
- java操作mongoDB数据库的简单实例
首先导入mongoDB的jar包 http://pan.baidu.com/s/1bnGMJRD //DataBase.java package com.mongodb.test; import ja ...
- [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...
随机推荐
- MyEclipse同时配置多个tomcat
步骤: 1.可以把原有tomcat复制一份,或者下载新的tomcat,如果有必要的话,修改/conf/service.xml文件中tomcat的端口号,避免端口同时暂用出现错误 2.请看一下图片:打开 ...
- Beta 讨论分析——持续更新ing
wonderland Beta 讨论分析 标签(空格分隔): 软工实践 wonderland 主要工作: info信息: 1.关联账号界面:hbb 2.标签检索界面:hbb 3.近期活跃度(cf.hd ...
- this 指向问题
你不懂JS: this 与对象原型 第二章: this豁然开朗! 在第一章中,我们摒弃了种种对this的误解,并且学习了this是一个完全根据调用点(函数是如何被调用的)而为每次函数调用建立的绑定. ...
- [CB] 支付宝区块链的应用- 区块链发票医保理赔.
全国第一单区块链理赔.发票开出:1分钟报销 区块链技术和概念随着比特币等虚拟电子货币的兴起而尽人皆知,但是区块链的用途可不仅仅只玩币,尤其是在“矿难”到来之后,区块链正在向更多应用领域渗透.最 ...
- c语言和c++有什么区别
差不多是win98跟winXP的关系.C++是在C的基础上增加了新的理论,玩出了新的花样.所以叫C加加. C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输 ...
- SpringBoot 3.SpringBoot 整合 MyBatis 逆向工程以及 MyBatis 通用 Mapper
一.添加所需依赖,当前完整的pom文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...
- memcache安装以及php_memcache.dll 扩展安装
php_memcache.dll扩展下载地址:http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/ 下载注意事项:选择匹配自己环 ...
- ES6学习笔记(一):变量赋值和基本数据类型
let和const let和const不存在变量提升 变量一定要在声明后使用,否则报错. var a = []; for (var i = 0; i < 10; i++) { a[i] = fu ...
- 【刷题】LOJ 6227 「网络流 24 题」最长k可重线段集问题
题目描述 给定平面 \(\text{xoy}\) 上 \(n\) 个开线段组成的集合 \(\text{I}\) ,和一个正整数 \(k\) ,试设计一个算法. 从开线段集合 \(\text{I}\) ...
- mysql账户添加远程访问
我们要将root账户设置为远程可访问 mysql> show databases; +--------------------+ | Database | +------------------ ...