一、添加

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

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

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

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

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

  3. 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 ...

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

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

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

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

  6. JAVA 处理 Spring data mongodb 时区问题

    Spring data mongodb 查询出结果的时候会自动 + 8小时,所以我们看起来结果是对的 但是我们查询的时候,并不会自动 + 8小时,需要自己处理 解决方法 1   @JsonFormat ...

  7. Spring data mongodb ObjectId ,根据id日期条件查询,省略@CreatedDate注解

    先看看ObjectId 的json 结构,非常丰富,这里有唯一机器码,日期,时间戳等等,所以强烈建议ID 使用 ObjectId 类型,并且自带索引 Spring data mongodb 注解 @C ...

  8. Spring data mongodb @CreatedBy@LastModifiedBy@CreatedBy@LastModifiedBy SpringSecurityAuditorAware,只记录用户名

    要在Spring data mongodb 中使用@CreatedBy@LastModifiedBy@CreatedBy@LastModifiedBy  这四个注解 必须实现 SpringSecuri ...

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

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

随机推荐

  1. chrles设置断点

    1.选择你要断点的接口,右键Breakpoints 2.配置断点接口proxy>Breakpoint settings query设置为* 3.开始断点,重新抓取接口 修改入参.请求头 修改出参 ...

  2. springboot整合 thymeleaf 案例

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...

  3. 一道装呀(状压)DP

    generator 题目描述: 自己的数学太差了,居然没看出来和这两个是相同的: 啊啊啊: 所以装呀一下就好了: #include<iostream> #include<cstdio ...

  4. [CF846E]Chemistry in Berland题解

    这题乍一看是一道水树形DP(其实事实上它确实是树形DP),然后设f[i]表示第i个点所多余/需要的材料,然后我们愉快的列出了式子: if(f[v]<0) f[u] += f[v] * edges ...

  5. 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 ...

  6. [hadoop](3) MapReduce:创建计数器、任务状态和写入日志

    前言 本章主要讲述了如何在mapreduce任务中添加自定义的计数器,从所有任务中聚合信息,并且最终输出到mapreduce web ui中得到统计信息. 准备工作 数据集:ufo-60000条记录, ...

  7. BLOB类型的字段用于存储二进制数据

    MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型类型 ...

  8. Node.js - 使用 Express 和 http-proxy 进行反向代理

    安装 Express 和 http-proxy npm install --save express http-proxy 反向代理代码 proxy.js var express = require( ...

  9. linux下rpm包安装、配置和卸载mysq

    l   WIN10下虚拟机:VMware workstation 12 PRO 安装 # 1.查看系统版本 [root@vm-xiluhua][/home/xiluhua]$ cat /etc/red ...

  10. 合并石子(区间DP)

    有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻的2堆石子合并,合并花费为新合成的一堆石子的数量.求将这N堆石子合并成一堆的总花费最小. 区间DP思想:现在小区间进行DP得到最优解, ...