一、添加

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. [CF1056E]Check Transcription

    题目:Check Transcription 传送门:http://codeforces.com/contest/1056/problem/E 分析: 1)显然有个$O( \frac{t}{max(c ...

  2. Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)

    一.登录MySQL查看用SHOW VARIABLES LIKE 'character%';下字符集,显示如下: +--------------------------+---------------- ...

  3. Sublime Text3 代码编辑器使用笔记

    Sublime Text3 作为一款代码的文本编辑器,有许多插件,这一点是我认为 Sublime Text3 很强大的原因之一.插件的安装可以参考下面的文章. Sublime Text3 插件安装教程 ...

  4. linux 统计代码行数

    列出目录下所有文件(仅有文件名):ls -laR 列出目录下所有文件名称find . * 统计当前目录下全部代码行数find . * | xargs wc -l 统计当前目录下java文件行数,去除空 ...

  5. 《图解设计模式》读书笔记3-1 Singleton模式

    目录 单例模式 饿汉式 懒汉式 线程安全的懒汉式 单例模式 确保任何情况下都只有一个实例 饿汉式 public class Singleton { //在类被加载的时候运行一次,这是本类构造函数的唯一 ...

  6. Delphi中Tlist实例

    http://blog.163.com/jiandande3218@126/blog/static/74728469201132721428194/ Delphi中Tlist实例 2011-04-27 ...

  7. javascript 调试 使用console.table()

    或许你已经习惯了console.log()来调试js,非常使用,但是今天微博看到console.table()调试javascript,和console.log()类似,主要区别在于: 主要用来输出对 ...

  8. LeetCode 114. Flatten Binary Tree to Linked List 动态演示

    把二叉树先序遍历,变成一个链表,链表的next指针用right代替 用递归的办法先序遍历,递归函数要返回子树变成链表之后的最后一个元素 class Solution { public: void he ...

  9. workflow-core 简介

    最近想做一个OA相关的网站开发,一直都听说有workflow的东西,之前也断断续续学习过 Workflow Foundation 4.0,还是没有搞明白到底能够用它做什么 但还是觉得workflow在 ...

  10. ScoutSuite:一款针对云集群环境的安全审计工具

    工具介绍 Scout Suite是一款针对云集群环境的开源安全审计工具,主要针对的是云端环境的安全状况.通过使用云服务提供商暴露的API,Scout Suite可以从高安全风险区域收集配置数据以备研究 ...