spring結合mongodb增刪改的基本操作
阿新 • • 發佈:2018-12-24
## 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);
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=ArriyfieldsObject.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);