Spring Data MongoDB 四:基本文檔修改(update)(一)

  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 方法差不多,所以就沒詳細一個一個介紹過去。


 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章