1. 程式人生 > >MongoDB資料庫的初步認識,常用的查詢操作

MongoDB資料庫的初步認識,常用的查詢操作

      最近因為專案需要,用到了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就可以了。

由於水平有限,有錯誤的地方請大家指正。