zoukankan      html  css  js  c++  java
  • 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 方法几乎相同,所以就没具体一个一个介绍过去。


     

     

     

     

     

     

  • 相关阅读:
    使用XMLReader读XML
    C#命名空间大全详细教程
    C# using 三种使用方式
    SVN服务器搭建
    简单的自定义Session
    python学习第十八天 --错误&异常处理
    锁的等级:方法锁、实例锁、类锁
    java线程池如何合理的设置大小
    挖掘两个Integer对象的swap的内幕
    实现线程同步的方式
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6903101.html
Copyright © 2011-2022 走看看