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. mysql explain字段意思解释

    mysql explain字段意思解释 explain包含id.select_type.table.type.possible_keys.key.key_len.ref.rows.extra字段 id ...

  2. Java 学习(2):java 基础概念

    Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.以 ...

  3. 【CF500D】New Year Santa Network(树上统计)

    ..]of longint; z:..]of extended; n,i,m,tot,x1:longint; ans,fenmu,y1:extended; procedure add(a,b:long ...

  4. 共享内存之——mmap内存映射

    共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制.共享内存可以通过mmap()映射普通文件 (特殊情况下还可以采用匿名映射)机制实现,也可以通过sy ...

  5. 快充 IC BQ25896 如何判斷 手機插著 adapter 充電器時,adapter Iout 大於限制,adapter Vout 小於 限制,導致 battery 不但沒充電且還需放電。

    若電池在 放電時,ICHGR 為0. 若電池在 充電時,ICHGR有變化.   下面有寫到 charge current 所以不是 discharge current   狀況:           ...

  6. 四、 java循环结构

    for循环结构: 格式:①初始化条件;②循环条件;③迭代条件;④循环体 for(①;②;③){ //④ } 执行过程:①-②-④-③-②-④-③-...-④-③-②,直至循环条件不满足,退出当前的循环 ...

  7. CF997D

    分析: 假设在第一个树上我们有一个长度为x的环,在第二树上我们有一个长度为y的环,那么可以在叉积树上构造出$\binom{x+y}{x}$个长度为x+y的环 问题的关键就变成了如何统计出在一个树上的长 ...

  8. java retry:详解

    发现 今天在探秘线程池原理知识点,在阅读JDK源码时遇到程序代码中出现如下代码,因为之前没有遇到过,于是特地记录下来并谷歌了一番,后面我自己做了一些简要的验证和分析. 验证 网上溜达一番发现,这ret ...

  9. 把Execl表格中的数据获取出来保存到数据库中

    比如我们遇到一些需要把execl表格中的数据保存到数据库中,一条一条保存效率底下而且容易出错,数据量少还好,一旦遇到数据量大的时候就会累死个人啊,下面我们就来把execl表格中数据保存到对应的数据库中 ...

  10. Play框架连接Mysql遇到的一些问题

    最近,在基于Play框架的项目中需要连接Mysql数据库.在这个过程中遇到了一些问题.在此,把它记录下来. 首先,Play框架和Mysql连接有两种方式,这两种方式都是在application.con ...