博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring data mongodb CURD
阅读量:5136 次
发布时间:2019-06-13

本文共 5803 字,大约阅读时间需要 19 分钟。

一、添加

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部分的源代码:

 

    find查询时指定返回的需要的字段

 

    org.springframework.data.mongodb.core.query.BasicQuery提供了

             构造方法

             BasicQuery(DBObject queryObject, DBObject fieldsObject)

            BasicQuery(java.lang.String query, java.lang.String fields)

      BasicQuery查询语句可以指定返回字段,构造函数

             BasicQuery(DBObject queryObject, DBObject fieldsObject)

            fieldsObject 这个字段可以指定返回字段

            fieldsObject.put(key,value)

            key:字段

           value:

             说明:

                  1或者true表示返回字段

                 0或者false表示不返回该字段

               _id:默认就是1,没指定返回该字段时,默认会返回,除非设置为0是,就不会返回该字段。

               指定返回字段,有时文档字段多并数据大时,我们指定返回我们需要的字段,这样既节省传输数据量,减少了内存消耗,提高了性能,在数据大时,性能很明显的。

 

四、修改

  我们对MongoDB的基本文档修改, MongoDB的查询语法:

[sql]   
 
  1. >db.collection.update(  
  2.  <query>,  
  3.  <update>,  
  4.  upsert:<boolean>,  
  5.  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  修改符合条件的所有

     

  3. mongoTemplate. Upsert        修改符合条件时如果不存在则添加

     

  参数说明:

     (1)    Query : 要修改哪些的查询条件,类似于SQL 的 where

 

       1) org.springframework.data.mongodb.core.query

       2) org.springframework.data.mongodb.core.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类

 

  1. BasicDBObject basicDBObject=new BasicDBObject();  
  2. basicDBObject.put("$set"new BasicDBObject("date","2015-08-09"));  
  3. Updateupdate=newBasicUpdate(basicDBObject);  
  4. mongoTemplate.updateFirst(new Query(Criteria.where("cname").is("zcy")), update,collectionName);

 

 

转载于:https://www.cnblogs.com/GtShare/p/7685557.html

你可能感兴趣的文章
【概率】poj 2096:Collecting Bugs
查看>>
javascript 无限分类
查看>>
【自制插件】MMD4Maya
查看>>
解决linux服务器乱码
查看>>
mapbox.gl文字标注算法基本介绍
查看>>
【C++】异常简述(二):C++的异常处理机制
查看>>
web.config在哪里
查看>>
SQL Server 2000 版本支持的最大物理内存量
查看>>
spring IOC装配Bean(注解方式)
查看>>
FTP服务器的搭建和使用(centos7)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
MyEclipse搭建SSM框架(Spring+MyBatis+SpringMVC)
查看>>
kubernetes_book
查看>>
Linux下串口通信工具minicom的用法
查看>>
使用SWIG轻松编写Python扩展
查看>>
Redis 常用数据结构命令
查看>>
Tomcat之session解决方案
查看>>
缓冲区溢出漏洞实验
查看>>
Linux命令之bc - 浮点计算器、进制转换
查看>>