MongoDB資料庫的初步認識,常用的查詢操作
阿新 • • 發佈:2018-12-21
最近因為專案需要,用到了MongoDB,之前只用過關係型資料庫,第一次專案中用到,有一點點心得和收穫,記錄一下。
MongoDB 是一種文件型數s庫,裡面分為資料庫(DBs)和集合(Collections),分別相當於SQL的資料庫和資料表。資料
因為本次業務原因,做的都是查詢操作,沒有增刪改等操作。(比較簡單,看下就會了,哈哈)
SQL MongoDB
需要注意的是,MongoDB有一個管道的概念,相當於一層一層的過濾,順序不能亂,否則會報錯(A pipeline stage specification object must contain exactly obe field
// match(相當於 WHERE 或者 HAVING ) BasicDBObject query= new BasicDBObject(); BasicDBObject[] array = { new BasicDBObject("time", new BasicDBObject("$gte", "2018-09-12")),new BasicDBObject("time", new BasicDBObject("$lte","2018-12-25"))}; query.append("$and", array); BasicDBObject match = new BasicDBObject("$match", query); //group(相當於 GROUP BY) BasicDBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$subject") .append("count", new BasicDBObject("$sum", 1))); //sort(排序) BasicDBObject sort = new BasicDBObject("$sort", new BasicDBObject("count", -1));//1:正序,-1倒序 //skip(跳過前面多少條資料,分頁時使用) //limt(只要前多少條資料,分頁時使用) BasicDBObject limit = new BasicDBObject("$limit", pageSize); BasicDBObject skip = new BasicDBObject("$skip", (pageNo - 1) * pageSize); //queryList集合裡的順序不能亂,否則會報錯。 List<DBObject> queryList = new ArrayList<>(); queryList .add(match); queryList .add(group); queryList .add(sort); queryList .add(skip); queryList .add(limit); AggregateIterable<Document> iterable = mongoClient.mongoClient.getDatabase(dbName).getCollection(gatherName).aggregate(queryList );
上面的程式碼就是進行聚合後的操作,查詢出的集合裡有(_id,count)兩個欄位,_id對應的值就是subject,count對應的值是總數,這樣我們就可以查出結果了,並且進行了分頁操作,只需要傳入相應pageNo和pageSize就可以了。
由於水平有限,有錯誤的地方請大家指正。