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 queryBuildernewQueryBuilder(); 

           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]  view plain  copy
 
  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);

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM