MongoDB 進階查詢($type、排序、Limit、$group、aggregate())

關於查詢,在MongoDB中,查詢方式跟以往SQL差異很大,所以各位在學習時,最好能把SQL都忘掉XD,此篇說是進階,其實也只是比基本多加深一點點,了解這些就可以滿足基本需求了。

$type  (詳細)
此功能意思是指,查詢資料中所包含的類別型態,符合的都列出來,型態有哪些呢?如下表

類型
Double 1
String 2
Object 3
Array 4
Binary data 5
Object id 7
Boolean 8
Date 9
Null 10
Regular expression 11
JavaScript code 13
Symbol 14
JavaScript code with scope 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255
Max key 127

用法如下:  ($type:後面接的值就是上表列的值)

db.Table1.find({text:{$type:1}});

意思是說,查詢Table1裡面text內容型態為double。


排序:

於查詢語法後面加上  .sort() ,括號內放置條件,如下


db.Table1.find().sort({Key:1});

其中,1代表排序型態(遞升) ,若是  -1 代表(遞減)。


Limit:

用途是查詢出來的筆數,於查詢語法後面加上  .limit() ,括號裡面只限數字型態。

類似SQL中的top

db.Table1.find().limit(4);

表示只顯示4筆資料。



$group 和 aggregate()   (詳細)

這兩個基本上都是一起的,$group就不需多解釋,等同SQL中的GROUP BY

aggregate() 則是處理資料的計算(例如:加總、平均等)。

使用方式如下:

先加入以下資料
{ "_id" : "1", "User" : "Kevin", "Country" : "Finland", "Count" : 3 }
{ "_id" : "2", "User" : "John", "Country" : "Finland", "Count" : 2 }
{ "_id" : "3", "User" : "John", "Country" : "Finland", "Count" : 5 }
{ "_id" : "4", "User" : "Mary", "Country" : "Sweden", "Count" : 2 }
{ "_id" : "5", "User" : "Mary", "Country" : "Sweden", "Count" : 6 }
{ "_id" : "6", "User" : "Kevin", "Country" : "England", "Count" : 1 }

若要針對USER查詢加總的Count,語法如下

db.Table1.aggregate([{$group: {_id:"$User", totalcount:{$sum:"$Count"}}}]);

結果

{ "_id" : "Kevin", "totalcount" : 4 }
{ "_id" : "John", "totalcount" : 7 }
{ "_id" : "Mary", "totalcount" : 8 }


大致上先簡單介紹到這邊。

參考資料:MongoDB
                   W3CSchool







留言