關於查詢,在MongoDB中,查詢方式跟以往SQL差異很大,所以各位在學習時,最好能把SQL都忘掉XD,此篇說是進階,其實也只是比基本多加深一點點,了解這些就可以滿足基本需求了。
$type (詳細)
此功能意思是指,查詢資料中所包含的類別型態,符合的都列出來,型態有哪些呢?如下表
$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
類似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
留言
張貼留言