1. 程式人生 > >spring結合mongodb增刪改的基本操作

spring結合mongodb增刪改的基本操作


## is查詢  這是按明確條件查詢

例如:要查詢名字為Eric的記錄
Query query=new Query();
query.addCriteria(Criteria.where("name").is("Eric"));
User users=mongoTemplate.findOne(query,User.class); //返回一天記錄,沒有記錄就回返回null


## 多個條件組合查詢

例如:查詢name=Eric and age=27

Query query=new Query();
query.addCriteria(Criteria.where("name").is("Eric").and("age").is("27")));

List<User> list=mongoTemplate.find(query,User.class);

例如:查詢name=Eric or name=Arriy
Query query=new Query();
query.addCriteria(new Criteria.orOperator(Criteria.where("name").is("Eric"),Criteria.where("name").is("Arriy")));
List<User> list=mongoTemplate.find(query,User.class);


## find查詢返回指定的欄位值

queryBuilder.or()  是條件查詢,是查詢name=Eric or name=Arriy
fieldsObject.put(key, value)   key表示要返回的欄位,key為1就是要返回這個欄位,其它的欄位的值返回都是空,其中_id 這個欄位都回返回,除非特定設定了fieldsObject.put("_id", 0),這就不會返回了
QueryBuilder queryBuilder = new QuerBuilder();
queryBuilder.or(new BasicDBObject("name","Eric"),new BasicDBObject("name","Arriy"));
BasicDbObject fieldsObject = new BasicDBObject();
fieldsObject.put("name",1);
fieldsObject.put("age",1);
Query query=new BasicQuery(queryBuilder.get(), fieldsObject);

List<User> list=mongoTemplate.find(query, User.class);

返回幾個特定的欄位的另外一種寫法
Query query=new Query(Criteria.where("tel").is(param));
query.fields().include("person.name").include("like");
mongoTemplate.find(query, Dhh.class);

## regex查詢 相當於sql中的模糊查詢

例如: 查詢名字以A開頭的所有使用者
Query query=new Query();
query.addCriteria(Criteria.where("name").regex("^A"));
List<User> users = mongoTemplate.find(query,User.class);
例如:查詢名字以C結尾的所有使用者
Query query=new Query();
query.addCriteria(Criteria.where("name").regex("c$"));
List<User> users=mongoTemplate.find(query, User.class);

## lt(小於)和gt(大於)查詢

例如:查詢年齡在20歲到50歲之前的使用者
Query query=new Query();
query.addCriteria(Criteria.where("age").lt(50).gt(20));
List<User> users= mongoTemplate.find(query, User.class);

## sort對結果進行排序

例如:對年齡進行升序排列
Query query=new Query();
query.with(new Sort(Sort.Direction.ASC, "age"));
List<User> users=mongoTemplate.find(query, User.class);


## 分頁的查詢

例如 只顯示一頁,每頁2兩個記錄
final Pageable pageableRequest = new PageRequest(0,2);
Query query= new Query();
query.with(pageableRequest);
List<User> users=mongoTemlate.find(query, User.class);


## 插入記錄

monogoTemplate.save(user);
monogoTemplagte.insert(user);
說明:
    當user物件中包含主鍵"_id" 此時用inser方法回報主鍵重複,用save方法會更新“_id"對應的記錄
    當user物件中沒有主鍵”_id" 此時inser和save方法都會增加一條記錄

## 根據id刪除記錄

monogoTemplate.deleteById(object id);
刪除物件操作
monogoTemplate.delete(User user);
根據條件刪除
Query query=new Query(Criteria.where("_id").is(id));
mongoTemplate.remove(query,AutomaticAlarm.class);  

## 修改滿足條件的第一條記錄

Query query=new Query(Criteria.where("_id").is(id));
Update update = Update.update("要更新的欄位", "更新的值");
mongoTemplate.updateFirst(query, update, Object.class);
修改滿足條件的所有記錄
monogoTemplate.updateMulti(query,update, User.class);
符合條件時修改,不存在符合條件的記錄則新增
mongoTemplate.Upsert(query, update, User.calss);