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  改动符合条件的全部

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)(一)的更多相关文章

  1. Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)

    Spring Data MongoDB 三:基本文档查询(Query.BasicQuery)(一) 学习MongoDB 六: MongoDB查询(游标操作.游标信息)(三) 一.简单介绍 Spring ...

  2. Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)

    一.简单介绍 Spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...

  3. Spring Data MongoDB 三:基本文档查询(Query、BasicQuery

    一.简介 spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...

  4. Spring data mongodb 聚合,投射,内嵌数组文档分页.

    尽量别直接用 DBObject  ,Spring data mongodb 的api 本来就没什么多大用处,如果还直接用 DBObject 那么还需要自己去解析结果,说动做个对象映射,累不累 Spri ...

  5. spring data mongodb 配置遇到的几个问题

    一. mongodb 2.2版本以上的配置 spring.data.mongodb.uri = mongodb://newlook:newlook@192.168.0.109:27017/admin ...

  6. SpringMVC MongoDB之“基本文档查询(Query、BasicQuery)”

    一.简介 spring Data  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...

  7. spring data mongodb中,如果对象中的属性不想加入到数据库字段中

    spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...

  8. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

  9. Spring Boot属性文件配置文档(全部)

    This sample file is meant as a guide only. Do not copy/paste the entire content into your applicatio ...

随机推荐

  1. Django自定义User模型和登录验证

    用户表已存在(与其他App共用),不能再使用Django内置的User模型和默认的登录认证.但是还想使用Django的认证框架(真的很方便啊). 两个步骤: 1)自定义Use模型,为了区分系统的Use ...

  2. Blog 081018

    对于 linux 系统 api, 尝试理解函数参数和函数之间的内在联系,为什么要用这些参数而不是另一些参数,了解 api 之间的一些共性. 一个扩展性良好的程序,结构都有一些共性,就像是一个国家,有好 ...

  3. Introduction to the WinPcap Networking Libraries

    Introduction to the WinPcap Networking Libraries use wire shark or fiddler

  4. 如何在requirejs下引用bootstrap

    原本以为只要require过来就能用 require(['jquery','underscore','bootstrap','cache'],function($,U,B,C){ 但发现会报错,类似未 ...

  5. float 常见用法与问题--摘抄

    float 属性绝对是众多切图仔用的最多的 CSS 属性之一,它的用法很简单,常用值就 left.right.none 三个,但是它的特性你真的弄懂了吗? 我会在这里介绍我对 float 的认识与使用 ...

  6. py2exe打包整个项目

    这段时间做了用Python做了一个科学计算的项目,项目中用到了很多的第三方Python库,包括PyQt.traits.traitsui.matplotlib.pyface.table.numpy.tv ...

  7. Jmeter(四十九)_常用的性能测试监听器

    概述 jmeter中提供了很多性能数据的监听器,我们通过监听器可以来分析性能瓶颈 本文以500线程的阶梯加压测试结果来描述图表. 常用监听器 1:Transactions per Second 监听动 ...

  8. 蚂蚁金服CTO程立:金融级分布式交易的技术路径

    总结: 强一致的微服务 oceanbase里面的投票选举以及多中心多地部署 单元化市异地多活的基础.支付宝是异地多活和容灾结合,而容灾的基础也是单元化.基于单元化进行单元的调度.部署.容灾. 混合云架 ...

  9. 2017-11-07-noip模拟题

    T1 数学老师的报复 矩阵快速幂模板,类似于菲波那切数列的矩阵 [1,1]*[A,1 B,0] #include <cstdio> #define LL long long inline ...

  10. POI2004

    11th Polish Olympiad in Informatics(POI2004) <br > 填坑计划第二弹......把这个没填完的坑搬过来啦~ 上次勉强填完NEERC的坑... ...