代码改变世界

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

2017-05-25 12:28  tlnshuju  阅读(1474)  评论(0编辑  收藏  举报

  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  改动符合条件第一条记录

      

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

     

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

     

  參数说明:

     (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数据

         


      第三步:运行mongoTemplate. updateFirst操作


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

           

 


四.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数据

             

 

 

         第三步:运行mongoTemplate. updateMulti操作


         第四步:查询MongoDB数据:

                 

      

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

 

四.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的数据

            


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

 

   第四步:查询MongoDB数据

       


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


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