Spring Data MongoDB 四:基本文档改动(update)(一)

摘要:
仅仅改动第一条,假设设置为true,所有更新我们SpringDataMongoDB提供的相应的改动方法1.mongoTemplate.updateFirst改动符合条件第一条记录2.mongoTemplate.updateMulti改动符合条件的全部3.mongoTemplate.Upsert改动符合条件时假设不存在则加入參数说明:Query:要改动哪些的查询条件,类似于SQL的where1)org.springframework.data.mongodb.core.query2)org.springframework.data.mongodb.core.query.BasicQuery这两个參数的差别和使用,在SpringDataMongoDB三:基本文档查询(一)有介绍过。就在详细介绍update1)org.springframework.data.mongodb.core.query.Update2)子类org.springframework.data.mongodb.core.query.BasicUpdateorg.springframework.data.mongodb.core.query.BasicUpdate继承了org.springframework.data.mongodb.core.query.UpdateUpdate提供了一些方法对基本文档进行操作SpringMongoDBUpdateMongoDB描写叙述Updaterename$rename重命名字段Updateset$set用来指定一个键的值,假设不存在则创建它Updateunset$unset用来指定一个键的值。

Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)

学习MongoDB 二:MongoDB加入、删除、改动

一.简单介绍

Spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的update的操作,能够对在存储数据时是以键-值对的集合键是字符串,值能够是数据类型集合里的随意类型,包含数组和文档进行改动,我们今天介绍对基本文档的改动的方法、參数进行介绍。

我们对MongoDB的基本文档改动, MongoDB的查询语法:

  >db.collection.update(
   <query>,
   <update>,
   upsert:<boolean>,
   multi:<boolean>
 )

參数

类型

描写叙述

query

document

要改动哪些的查询条件。类似于SQL where

update

document

要改动的字段相应的值

upsert

boolean

可选的,默认值是false。假设依据查询条件没找到相应的文档。假设设置为true,相当于运行insert,假设设置为false,不做不论什么的操作。

multi

boolean

可选的,默认值是false。假设依据查询条件找到相应的多条记录是,假设设置为false时。仅仅改动第一条,假设设置为true,所有更新

我们SpringData MongoDB提供的相应的改动方法

1. mongoTemplate. updateFirst改动符合条件第一条记录

Spring Data MongoDB 四:基本文档改动(update)(一)第1张

2. mongoTemplate. updateMulti 改动符合条件的全部

Spring Data MongoDB 四:基本文档改动(update)(一)第2张

3. mongoTemplate. Upsert 改动符合条件时假设不存在则加入

Spring Data MongoDB 四:基本文档改动(update)(一)第3张

參数说明:

(1)Query : 要改动哪些的查询条件,类似于SQL 的 where

1) org.springframework.data.mongodb.core.query

2) org.springframework.data.mongodb.core.query.BasicQuery

这两个參数的差别和使用,在Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)有介绍过。就在详细介绍

(2)update

1)org.springframework.data.mongodb.core.query.Update

2)子类org.springframework.data.mongodb.core.query.BasicUpdate

org.springframework.data.mongodb.core.query.BasicUpdate继承了org.springframework.data.mongodb.core.query.Update

Update提供了一些方法对基本文档进行操作

Spring MongoDB Update

MongoDB

描写叙述

Update rename (String oldName, String newName)

$rename

重命名字段

Update set (String key, Object value)

$set

用来指定一个键的值,假设不存在则创建它

Update unset (String key)

$unset

用来指定一个键的值。假设不存在不创建创建它

BasicUpdate继承了update方法,BasicUpdate构造參数能够自己实现update SQL 语句

1)BasicUpdate(DBObjectupdate Object) Object是JSON格式

2)BasicUpdate(java.lang.StringupdateString)

BasicUpdate须要手动实现$set等操作符SQL语句,也能够使用Update的一些操作改动文档的操作方法,由于继承了Update类

二.mongoTemplate.Upsert 操作

mongoTemplate. Upsert 改动符合条件时假设不存在则加入

1.对改动符合条件时假设不存时操作

第一步:我们查询条件onumber=001的cname进行改动。Spring DataMongoDB代码实现

     mongoTemplate.upsert(newQuery(Criteria.where("onumber").is("001")), newUpdate().set("cname", "zcy"), collectionName);

第二步:我们先查询MongoDB数据

    >db.orders.find({"onumber":"001"})
    > 

第三步:我们运行mongoTemplate.upsert操作

第四步:查询MongoDB数据:

   >db.orders.find({"onumber":"001"})
     { "_id" : ObjectId("55c5673e28121ca9e1dd397f"),"onumber" : "001", "cname" : "zcy" }

改动符合条件时假设不存在则加入,相当于运行了insert

2. 对改动符合条件时存在时,改动字段不存在的操作

第一步:Spring Data MongoDB代码没改变

第二步:我们先查询MongoDB数据

   > db.orders.find({"onumber":"001"})
     { "_id" : ObjectId("55c5689727e0a66301f9bb51"),"onumber" : "001" }

第三步: 我们运行mongoTemplate.upsert操作

第四步:然后在查询MongoDB数据:

  >db.orders.find({"onumber":"001"})
     { "_id" : ObjectId("55c5689727e0a66301f9bb51"),"onumber" : "001", "cname" : "zcy" }

相当于运行了MongoDB的:

  >db.orders.update(                           
      {"onumber" :"001"}, 
      {$set: { "cname " : "zcy2"} }, 
       true, 
       true 
   ) 

验证了mongoTemplate. Upsert 改动符合条件时假设不存在则加入

三.mongoTemplate. updateFirst

mongoTemplate. updateFirst 改动符合条件第一条记录

1.对改动符合条件时多条记录的操作

第一步: 我们查询条件cname=zcy 的date进行改动,Spring Data MongoDB代码实现

       mongoTemplate. updateFirst (newQuery(Criteria.where("cname").is("zcy ")), newUpdate().set("date", "2015-08-08"), collectionName);

第二步:我们先查询MongoDB数据

Spring Data MongoDB 四:基本文档改动(update)(一)第4张

第三步:运行mongoTemplate. updateFirst操作

第四步:然后在查MongoDB数据:

Spring Data MongoDB 四:基本文档改动(update)(一)第5张

四.mongoTemplate. updateMulti

mongoTemplate.updateMulti改动符合条件的全部

1.对改动符合条件时多条记录的操作

第一步:我们查询条件cname=zcy 的date进行改动。Spring Data MongoDB代码实现

       mongoTemplate. updateMulti (newQuery(Criteria.where("cname").is("zcy ")), newUpdate().set("date", "2015-08-08"), collectionName);

第二步: 我们先查询MongoDB数据

Spring Data MongoDB 四:基本文档改动(update)(一)第6张

第三步:运行mongoTemplate. updateMulti操作

第四步:查询MongoDB数据:

Spring Data MongoDB 四:基本文档改动(update)(一)第7张

改动符合条件的全部数据文档

四.BasicUpdate操作

BasicUpdate JSON格式。须要我们自己实现update SQL,BasicUpdate须要手动实现$set等操作符SQL语句,也能够使用Update的一些操作改动文档的操作方法,由于继承了Update类

mongoTemplate.updateFirst 改动符合条件第一条记录

第一步:对改动符合条件时多条记录的操作时。我们查询条件cname=zcy 的date进行改动,Spring Data MongoDB代码实现

      BasicDBObject basicDBObject=new BasicDBObject();
      basicDBObject.put("$set", new BasicDBObject("date","2015-08-09"));
      Updateupdate=newBasicUpdate(basicDBObject);
      mongoTemplate.updateFirst(new Query(Criteria.where("cname").is("zcy")), update,collectionName);

第二步:查询MongoDB的数据

Spring Data MongoDB 四:基本文档改动(update)(一)第8张

第三步:运行mongoTemplate.updateFirst 操作。

第四步:查询MongoDB数据

Spring Data MongoDB 四:基本文档改动(update)(一)第9张

basicDBObject能够同一时候对多个字段进行改动

今天介绍了对主要的文档的改动,仅仅对Update set (String key, Object value)操作。其它的操作符能够參考学习MongoDB 二:MongoDB加入、删除、改动。我们今天主要介绍了改动方法,其它的操作跟set 方法几乎相同,所以就没具体一个一个介绍过去。

免责声明:文章转载自《Spring Data MongoDB 四:基本文档改动(update)(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇运维与自动化系列④自动化部署基础与gitzTree基本功能[core]下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SSH框架之-hibernate 三种状态的转换

一、遇到的神奇的事情 使用jpa操作数据库,当我使用findAll()方法查处一个List的对象后,给对这个list的实体进行了一些操作,并没有调用update 或者 saveOrUpdate方法,更改后的数据却神奇的保存到数据库里面去了。 最后简单粗暴的解决办法是把这份从数据里面查出来的List 复制了一份,然后再操作,再返回。数据就正常了,数据库也没...

分布式文档存储数据库之MongoDB备份与恢复

  前文我们聊了下mongodb的访问控制以及用户创建和角色分配,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13974656.html;今天我们来了解下mongodb的备份与恢复   为什么要备份?   备份的目的是对数据做冗余的一种方式,它能够让我们在某种情况下保证最少数据的丢失;之前我们对mongodb做副本...

ORACLE 多表关联 UPDATE 语句

快乐无极 , 15:18 , 开发文档 , 评论(0) , , 阅读(539) , Via aceplus | | 引用地址:注意: 该地址仅在今日23:59:59之前有效 为了方便起见,建立了以下简单模型,和构造了部分测试数据:在某个业务受理子系统BSS中,--客户资料表create table customers(customer_id number(...

MongoDB增删改查

一.MongoDB操作 之 原生ORM,根本不存在SQL语句 创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间 嗯嗯嗯嗯,我感受到了你内心的惊呼,瞅瞅你们这些没见过世面的样子 是的,MongoDB设计的比较随意,没有就认为你是在创建,use LuffyCity_Com是不存在的,所以MongoDB就认为你是要创建并使用 这个概念...

vscode 无法查看完整源码,环境是wsl2+ubunu,语言java

首先你是否安装了插件 Language support for Java ™ for Visual Studio Code2.然后在终端输入 sudo apt-get update 3.输入sudo apt install openjdk-你的版本-source 4.重新打开vscode,好了。   ✖...

mongo-go-driver mongo filter

and or判断数组为空 rd:=bson.M{"num":"1","$or":[]bson.M{{"$where":"this.logo.length>0"},{"$where":"this.ziliao.length>0"}}} mongo-go-driver: nested OR/AND query filterI try to crea...