Spring Data MongoDB 四:基本文档改动(update)(一)
Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)
一.简单介绍
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 |
update |
document |
要改动的字段相应的值 |
upsert |
boolean |
可选的,默认值是false。假设依据查询条件没找到相应的文档。假设设置为true,相当于运行insert,假设设置为false,不做不论什么的操作。 |
multi |
boolean |
可选的,默认值是false。假设依据查询条件找到相应的多条记录是,假设设置为false时。仅仅改动第一条,假设设置为true,所有更新 |
我们SpringData MongoDB提供的相应的改动方法
1. mongoTemplate. updateFirst 改动符合条件第一条记录
2. mongoTemplate. updateMulti 改动符合条件的全部
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3. mongoTemplate. Upsert 改动符合条件时假设不存在则加入
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
參数说明:
(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数据:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
四.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数据
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
第三步:运行mongoTemplate. updateMulti操作
第四步:查询MongoDB数据:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
改动符合条件的全部数据文档
四.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
方法几乎相同,所以就没具体一个一个介绍过去。
Spring Data MongoDB 四:基本文档改动(update)(一)的更多相关文章
- Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)
Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 六: MongoDB查询(游标操作.游标信息)(三) 一.简单介绍 Spring ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)
一.简单介绍 Spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery
一.简介 spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...
- Spring data mongodb 聚合,投射,内嵌数组文档分页.
尽量别直接用 DBObject ,Spring data mongodb 的api 本来就没什么多大用处,如果还直接用 DBObject 那么还需要自己去解析结果,说动做个对象映射,累不累 Spri ...
- spring data mongodb 配置遇到的几个问题
一. mongodb 2.2版本以上的配置 spring.data.mongodb.uri = mongodb://newlook:newlook@192.168.0.109:27017/admin ...
- SpringMVC MongoDB之“基本文档查询(Query、BasicQuery)”
一.简介 spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...
- spring data mongodb中,如果对象中的属性不想加入到数据库字段中
spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南
1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...
- Spring Boot属性文件配置文档(全部)
This sample file is meant as a guide only. Do not copy/paste the entire content into your applicatio ...
随机推荐
- Vmware Linux虚拟机磁盘扩容方法
我的LINUX版本是ubuntu12.04 32bit.今天在下载android源代码的时候发现自己最初给这个虚拟机分配的磁盘空间不足了(只有20G).所以就需要给磁盘扩容.网上大致搜索了一下,主要有 ...
- jenkins发送html测试报告
jenkins发送html测试报告 https://blog.csdn.net/galen2016/article/details/77975965/ <!DOCTYPE html> & ...
- 【BZOJ4555】【TJOI2016】【HEOI2016】求和 (第二类斯特林数+NTT卷积)
Description 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: $$f(n)=\sum_{i=0}^n\sum_{j=0}^i S(i,j)\tim ...
- PE+ 1.0 ( Pump Express Plus 1.0 )
Dialog iW1788 for PE+ 1.0 Dialog iW1680 for PE PE+1.0 for up to 15W battery, improve charging time, ...
- POJ 3368.Frequent values-处理数据+RMQ(ST)
昨天写的博客删了,占坑失败,还是先把RMQ玩的6一点再去搞后面的东西.废话少说,题解题姐姐_(:з」∠)_ Frequent values Time Limit: 2000MS Memo ...
- HTTP/1.1标准请求方法和状态码
HTTP/1.1标准自从1999年制定以来至今仍然是一个应用广泛并且通行的标准 相关文档 RFC2616:Hypertext Transfer Protocol -- HTTP/1.1 在RFC658 ...
- Linux VFS
翻译自Linux文档中的vfs.txt 介绍 VFS(Virtual File System)是内核提供的文件系统抽象层,其提供了文件系统的操作接口,可以隐藏底层不同文件系统的实现. Directir ...
- SQL盲注工具BBQSQL
SQL盲注工具BBQSQL SQL注入是将SQL命令插入到表单.域名或者页面请求的内容中.在进行注入的时候,渗透测试人员可以根据网站反馈的信息,判断注入操作的结果,以决定后续操作.如果网站不反馈具 ...
- 邁向IT專家成功之路的三十則鐵律 鐵律十六:IT人交友之道-單純
元曲知名的作家 白樸,曾在沉醉東風﹒漁夫一文創作中,寫道:「雖無刎頸交,卻有忘機友」.IT人交朋友應首重在單純而非廣泛,因為實際上越複雜的朋友圈,只會為你的工作以及生活帶來許多不必要的麻煩.至於男女朋 ...
- Android 蓝牙 笔记
安卓:短信复制机制 软件识别蓝牙 软件可以读取蓝牙的信息 给蓝牙弄上一个类似于短信的东西 并且存一个短信 然后发到客户端 客户端 可以分类 分成表格 形式 这样做的目的是为了 让你的设备可以写蓝牙给 ...