您的位置:首页 > 数据库 > Mongodb

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

2017-06-16 18:19 525 查看

一.简介

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

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

  

[sql] view
plain copy

>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代码实现

          

[java] view
plain copy

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

     

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

           

[sql] view
plain copy

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

>   

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

   

    第四步:查询MongoDB数据:

[sql] view
plain copy

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

  { "_id" : ObjectId("55c5673e28121ca9e1dd397f"),"onumber" : "001", "cname" : "zcy" }  

    修改符合条件时如果不存在则添加,相当于执行了insert

 

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

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

   

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

[sql] view
plain copy

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

  { "_id" : ObjectId("55c5689727e0a66301f9bb51"),"onumber" : "001" }  

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

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

[sql] view
plain copy

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

   { "_id" : ObjectId("55c5689727e0a66301f9bb51"),"onumber" : "001", "cname" : "zcy" }  

    相当于执行了MongoDB的:

[sql] view
plain copy

>db.orders.update(                             

    {"onumber" :"001"},   

    {$set: { "cname " : "zcy2"} },   

     true,   

     true   

 )   

     验证了 mongoTemplate. Upsert 修改符合条件时如果不存在则添加

 

三.mongoTemplate. updateFirst

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

  

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

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

[java] view
plain copy

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代码实现

[java] view
plain copy

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代码实现

[java] view
plain copy

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
方法差不多,所以就没详细一个一个介绍过去。

原文地址:http://blog.csdn.net/congcong68/article/details/47357203
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: