spring data mongodb CURD
一、添加
Spring Data MongoDB 的MongoTemplate提供了两种存储文档方式,分别是save和insert方法,这两种的区别:
(1)save :我们在新增文档时,如果有一个相同_ID的文档时,会覆盖原来的。
1)void save (Object objectToSave) 保存文档到默认的集合。
2)void save(Object objectToSave, String collectionName) 对指定的集合进行保存。
(2)insert:我们在新增文档时,如果有一个相同的_ID时,就会新增失败。
1)void insert(Object objectToSave) 保存文档到默认的集合。
2)void insertAll(Object objectsToSave) 批量添加到默认的集合。
3)void insert(Object objectToSave, String collectionName) 对指定的集合进行保存。
二、删除
1、删除文档
Spring Data MongoDB 的MongoTemplate提供删除文档如下几个方法:
@Override
public void remove(Map<String, Object> params,String collectionName) {
mongoTemplate.remove(new Query(Criteria.where("id").is(params.get("id"))),User.class,collectionName);
}
2、 删除集合
@Override
public void dropCollection(String collectionName) {
mongoTemplate.dropCollection(collectionName);
}---------------------------------------------------------集合、索引都不存在了,类型SQL的drop。
三、查询
MongoDB的查询语法:db.orders.find({{<field1>:<value1>,<field2>: <value2>, ... } },{field1:<boolean>, field2: <boolean> ... }
我们介绍是SpringData MongoDB 提供了find方法,方便我们通过java代码实现对MongoDB的查询操作:
mongoTemplate.find (query, entityClass)
参数说明:
entityClass:实体class,也就是要把文档转换成对应的实体。
query查询语句的实现的方式有两种:
1.org.springframework.data.mongodb.core.query
构造函数
Query (Criteria criteria)
接受的参数是org.springframework.data.mongodb.core.query.Criteria
Criteria是标准查询的接口,可以引用静态的Criteria.where的把多个条件组合在一起,就可以轻松地将多个方法标准和查询连接起来,方便我们操作查询语句。
例如: 查询条件onumber="002"
mongoTemplate.find (new Query(Criteria.where("onumber").is("002")),entityClass)
多个条件组合查询时:
例如:onumber="002" and cname="zcy"
mongoTemplate.find (new Query(Criteria.where("onumber").is("002").and("cname").is("zcy")),entityClass)
例如:onumber="002" or cname="zcy"
mongoTemplate.findOne(newQuery(newCriteria().orOperator(Criteria.where("onumber").is("002"),Criteria.where("cname").is("zcy"))),entityClass);
我们通过Criteria的and方法,把这个条件组合一起查询,Criteria提供了很多方法,我们这边先介绍基本文档的查询操作符,对于
数组文档或者内嵌文档的操作符,我们下一篇在介绍。
2、子类 org.springframework.data.mongodb.core.query.BasicQuery
构造方法
BasicQuery(DBObject queryObject)
BasicQuery(DBObject queryObject, DBObject fieldsObject)
BasicQuery(java.lang.String query)
BasicQuery(java.lang.String query, java.lang.String fields)
DBObject就是转换成JSON格式,提供了我们回顾一下,MongoDB查询时,
db.collection.find(query,projection),query类型是document,所以,我们想使用JSON字符串查询时,我们使用DBObject创建查询实例。
DBObject是接口,提供了几个子类,
我们比较经常使用的比较底层子类,扩展了自己的方法和继承父类,所以功能会比较多。
1. BasicDBObject
BasicBSONObject extendsLinkedHashMap<String,Object> implements BSONObject
BasicDBObject extends BasicBSONObject implementsDBObject
例如:查询条件onumber="002”
DBObject obj = new BasicDBObject();
obj.put( "onumber","002" );
相当于
db.collect.find({"onumber":"002"})
2. BasicDBList
BasicBSONList extendsArrayList<Object> implements BSONObject
BasicDBList extends BasicBSONList implements DBObject
BasicDBList可以存放多个BasicDBObject条件
例如:我们查询onumber=002OR cname=zcy1
BasicDBList basicDBList=new BasicDBList();
basicDBList.add(new BasicDBObject("onumber","002"));
basicDBList.add(new BasicDBObject("cname","zcy1"));
DBObjectobj =newBasicDBObject();
obj.put("$or", basicDBList);
Query query=new BasicQuery(obj);
相当于
db.orders.find({$or:[{"onumber":"002"},{"cname":"zcy1"}]})
basicDBList.add方法是添加一个文档的查询条件
3. com.mongodb. QueryBuilder
QueryBuilder默认构造函数,是初始化BasicDBObject,QueryBuilder多个方法标准和查询连接起来,方便我们操作查询语句。跟Criteria是标准查询的接口一样,
QueryBuilder和BasicDBObject配合使用
QueryBuilder queryBuilder= newQueryBuilder();
queryBuilder.or(new BasicDBObject("onumber","002"),newBasicDBObject("cname","zcy1"));
Query query=new BasicQuery(queryBuilder.get());
QueryBuilder帮我们实现了 $and等操作符,我们查看部分的源代码:QueryBuilder部分的源代码:
spring data mongodb CURD的更多相关文章
- spring data mongodb 配置遇到的几个问题
一. mongodb 2.2版本以上的配置 spring.data.mongodb.uri = mongodb://newlook:newlook@192.168.0.109:27017/admin ...
- spring data mongodb中,如果对象中的属性不想加入到数据库字段中
spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...
- Spring Data MongoDB example with Spring MVC 3.2
Spring Data MongoDB example with Spring MVC 3.2 Here is another example web application built with S ...
- 使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南
1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...
- Spring data mongodb 聚合,投射,内嵌数组文档分页.
尽量别直接用 DBObject ,Spring data mongodb 的api 本来就没什么多大用处,如果还直接用 DBObject 那么还需要自己去解析结果,说动做个对象映射,累不累 Spri ...
- JAVA 处理 Spring data mongodb 时区问题
Spring data mongodb 查询出结果的时候会自动 + 8小时,所以我们看起来结果是对的 但是我们查询的时候,并不会自动 + 8小时,需要自己处理 解决方法 1 @JsonFormat ...
- Spring data mongodb ObjectId ,根据id日期条件查询,省略@CreatedDate注解
先看看ObjectId 的json 结构,非常丰富,这里有唯一机器码,日期,时间戳等等,所以强烈建议ID 使用 ObjectId 类型,并且自带索引 Spring data mongodb 注解 @C ...
- Spring data mongodb @CreatedBy@LastModifiedBy@CreatedBy@LastModifiedBy SpringSecurityAuditorAware,只记录用户名
要在Spring data mongodb 中使用@CreatedBy@LastModifiedBy@CreatedBy@LastModifiedBy 这四个注解 必须实现 SpringSecuri ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery)(一)
一.简单介绍 Spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一 ...
随机推荐
- chrles设置断点
1.选择你要断点的接口,右键Breakpoints 2.配置断点接口proxy>Breakpoint settings query设置为* 3.开始断点,重新抓取接口 修改入参.请求头 修改出参 ...
- springboot整合 thymeleaf 案例
1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...
- 一道装呀(状压)DP
generator 题目描述: 自己的数学太差了,居然没看出来和这两个是相同的: 啊啊啊: 所以装呀一下就好了: #include<iostream> #include<cstdio ...
- [CF846E]Chemistry in Berland题解
这题乍一看是一道水树形DP(其实事实上它确实是树形DP),然后设f[i]表示第i个点所多余/需要的材料,然后我们愉快的列出了式子: if(f[v]<0) f[u] += f[v] * edges ...
- Oracle 中 not exists (select 'X' ...) 的含义
select a.col1,a.col2 from temp1 a where not exists (select 'X' from temp2 b where b.col2 = a.col1);s ...
- [hadoop](3) MapReduce:创建计数器、任务状态和写入日志
前言 本章主要讲述了如何在mapreduce任务中添加自定义的计数器,从所有任务中聚合信息,并且最终输出到mapreduce web ui中得到统计信息. 准备工作 数据集:ufo-60000条记录, ...
- BLOB类型的字段用于存储二进制数据
MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型类型 ...
- Node.js - 使用 Express 和 http-proxy 进行反向代理
安装 Express 和 http-proxy npm install --save express http-proxy 反向代理代码 proxy.js var express = require( ...
- linux下rpm包安装、配置和卸载mysq
l WIN10下虚拟机:VMware workstation 12 PRO 安装 # 1.查看系统版本 [root@vm-xiluhua][/home/xiluhua]$ cat /etc/red ...
- 合并石子(区间DP)
有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻的2堆石子合并,合并花费为新合成的一堆石子的数量.求将这N堆石子合并成一堆的总花费最小. 区间DP思想:现在小区间进行DP得到最优解, ...