一、添加
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部分的源代碼: