SpringBoot集成MongoDB

前言

以前寫了各類nosql數據庫的比較,以及相關理論,如今我在本地以springboot+MongoDB框架,探究了具體的運行流程,下面總結一下,分享給你們。html

 

運行前準備

安裝並啓動MongoDB應用程序java

參考網址:linux

windowsgit

http://www.runoob.com/mongodb/mongodb-window-install.htmlgithub

linuxspring

http://www.runoob.com/mongodb/mongodb-linux-install.htmlsql

 

在MongoDB應用工具中查詢數據增刪改效果(rebo3t)mongodb

下載地址:https://robomongo.org/download數據庫

 

lombok安裝json

參考網址:http://www.javashuo.com/article/p-ribvsdby-bm.html

 

代碼運行

代碼下載:https://github.com/a123demi/spring-boot-integration

 

代碼主要講解

主要依賴

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

 

 

數據庫鏈接

spring.application.name=spirngboot-int-mongodbeg

spring.data.mongodb.database=admin
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.password=root
spring.data.mongodb.port=27017
spring.data.mongodb.username=root

 

 

經過MongoTemplate來調用各類增刪改查的語句,好比

        Query query=new Query(Criteria.where("userName").is(userName));
        UserEntity user =  mongoTemplate.findOne(query , UserEntity.class);

 

 

涉及的主要關鍵函數有


mongoTemplate.save(user);

mongoTemplate.remove(query,UserEntity.class);

Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
//更新查詢返回結果集的第一條
WriteResult result =mongoTemplate.updateFirst(query,update,UserEntity.class);

Query query=new Query(Criteria.where("userName").is(userName));
UserEntity user =  mongoTemplate.findOne(query , UserEntity.class);

 

 高級查詢

分頁查詢

 //利用工具類拼裝分頁信息 
 SpringbootMongoDBPageable pageable = new SpringbootMongoDBPageable(); 
 MongoDBPageModel pm=new MongoDBPageModel(); 
 pm.setPagesize(3);
 pm.setPagenumber(1); 
 List<Order> orders = new ArrayList<>();
 //排序信息
 orders.add(new Order(Direction.DESC, "age"));
 Sort sort = new Sort(orders);
 pm.setSort(sort);
 pageable.setPage(pm);
 //拼裝查詢信息
 Query query = new Query();
 Criteria criteria = new Criteria();
 query.addCriteria(criteria.where("age").gte(6).lte(18));
 //檢索6-18歲的
 query.addCriteria(criteria.where("name").regex("文"));
 //模糊查詢名字
 Long count = mongoTemplate.count(query, OrdersData.class);
 //查詢總記錄數
 List<Entry> list = mongoTemplate.find(query.with(pageable), Entry.class);
//分頁聚合查詢(多表多條件關聯分頁查詢)
 //mongodb中有兩個表,一個是人物表 一個是寵物表,一我的能夠有多個寵物
 //人物表字段爲 String id, Integer age,String remark;
 //寵物表字段爲 String id, String manId,String age,String remark;
 //拼裝分頁信息
 SpringbootMongoDBPageable pageable = new SpringbootMongoDBPageable();
 MongoDBPageModel pm=new MongoDBPageModel();
 pm.setPagesize(2);
 pm.setPagenumber(1);
 List<Order> orders = new ArrayList<>();
 //排序
 orders.add(new Order(Direction.DESC, "age"));
 Sort sort = new Sort(orders);
 pm.setSort(sort);
 pageable.setPage(pm);
 //拼裝關聯信息
 LookupOperation lookupOperation = LookupOperation.newLookup(). from("dogData"). //關聯表名
 localField("_id"). //關聯字段
 foreignField("manId").//主表關聯字段對應的次表字段
 as("dogs");//查詢結果集合名
 //拼裝具體查詢信息
 //次表
 Criteria ordercri = Criteria.where("dogs").not().size(0);//只查詢有寵物的人
 ordercri.and("age").gte(1).lte(5);//只查詢1歲到5歲的寵物
 AggregationOperation match = Aggregation.match(ordercri);
 //主表
 Criteria qqq=Criteria.where("name").regex("文");//只查詢名字中帶有文的人
 AggregationOperation match1= Aggregation.match(qqq);
 //分頁查詢
 Aggregation aggregation = Aggregation.newAggregation(match1,lookupOperation,match,Aggregation.sort(pageable.getSort()),//排序 Aggregation.skip(pageable.getPageNumber()>1?(pageable.getPageNumber()-1)*pageable.getPageSize():0),//pagenumber
 Aggregation.limit(pageable.getPageSize()));//pagesize
 //總數查詢
 Aggregation counts = Aggregation.newAggregation(match1,lookupOperation,match).; int count = mongoTemplate.aggregate(counts, "manEntry", BasicDBObject.class).getMappedResults().size(); List<BasicDBObject> results = mongoTemplate.aggregate(aggregation, "manEntry", BasicDBObject.class).getMappedResults(); //查詢出的結果集爲BasicDBObject類型
 //解析過程
 for (BasicDBObject b :results ) { 
 //轉化爲jsonobject對象
 JSONObject jsonObject = new JSONObject(b);
 String id = jsonObject.get("id").toString();
 Integer age = ((int) jsonObject.get("age")); 
 String remark = jsonObject.get("remark").toString(); 
 //轉化爲jsonarray 
 JSONArray dogs = jsonObject.getJSONArray("dogs");
 if (dogs.size() > 0) {
 for (int i = 0; i < dogs.size(); i++) { 
 JSONObject job = dogs.getJSONObject(i);
 String dogId = job.get("id").toString(); 
 String manId = job.get("manId").toString();
 } 
 } 
 } 
 } 

 可參考網址:http://www.javashuo.com/article/p-whtigvit-k.html

相關文章
相關標籤/搜索