mongoDB 命令
在Linux下使用mongo進(jìn)入MongoDB命令行
mongo
創(chuàng)建和使用數(shù)據(jù)庫
> use mongo
switched to db mongo
> db
mongo
>
查看所有數(shù)據(jù)庫
> show dbs
admin? 0.000GB
local? 0.000GB
>
我們剛創(chuàng)建的數(shù)據(jù)庫 runoob并不在數(shù)據(jù)庫的列表中蒂阱, 要顯示它县习,我們需要向 runoob數(shù)據(jù)庫插入一些數(shù)據(jù)凳怨。
?> db.runoob.insert({"name":"菜鳥教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
local? 0.078GB
runoob? 0.078GB
test? ? 0.078GB
>
? ? ? MongoDB 中默認(rèn)的數(shù)據(jù)庫為 test爆存,如果你沒有創(chuàng)建新的數(shù)據(jù)庫粘优,集合將存放在 test 數(shù)據(jù)庫中。
? ? ? 注意: 在 MongoDB 中屏轰,集合只有在內(nèi)容插入后才會創(chuàng)建! 就是說僚匆,創(chuàng)建集合(數(shù)據(jù)表)后要再插入一個(gè)文檔(記錄),集合才會真正創(chuàng)建同规。
刪除數(shù)據(jù)庫
MongoDB刪除數(shù)據(jù)庫的語法格式如下:
db.dropDatabase()
刪除當(dāng)前數(shù)據(jù)庫循狰,默認(rèn)為 test,你可以使用 db命令查看當(dāng)前數(shù)據(jù)庫名券勺。
> use runoob
switched to db runoob
>
執(zhí)行刪除命令:
> db.dropDatabase()
{ "dropped" : "runoob", "ok" : 1 }
MongoDB 創(chuàng)建集合
MongoDB中使用 createCollection()方法來創(chuàng)建集合绪钥。
語法格式:
db.createCollection(name, options)
參數(shù)說明:
* name:要?jiǎng)?chuàng)建的集合名稱
* options:可選參數(shù),指定有關(guān)內(nèi)存大小及索引的選項(xiàng)
options可以是如下參數(shù):
字段 /類型/描述
capped /布爾? ? /(可選)如果為 true,則創(chuàng)建固定集合关炼。固定集合是指有著固定大小的集合程腹,當(dāng)達(dá)到最大值時(shí),它會自動覆蓋最早的文檔儒拂。
當(dāng)該值為 true時(shí)跪楞,必須指定 size參數(shù)缀去。
autoIndexId? ? /布爾? ? /(可選)如為 true,自動在 _id字段創(chuàng)建索引甸祭。默認(rèn)為 false。
size? /數(shù)值? ? /(可選)為固定集合指定一個(gè)最大值(以字節(jié)計(jì))褥影。
如果 capped為 true池户,也需要指定該字段。
max? ? /數(shù)值? ? /(可選)指定固定集合中包含文檔的最大數(shù)量凡怎。
在 test數(shù)據(jù)庫中創(chuàng)建 runoob集合:
> use test
switched to db test
> db.createCollection("runoob")
{ "ok" : 1 }
>
如果要查看已有集合校焦,可以使用 show collections命令:
> show collections
runoob
system.indexes
下面是帶有幾個(gè)關(guān)鍵參數(shù)的 createCollection()的用法:
創(chuàng)建固定集合 mycol,整個(gè)集合空間大小 6142800 KB,文檔最大個(gè)數(shù)為 10000個(gè)统倒。
> db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
{ "ok" : 1 }
>
在 MongoDB中寨典,你不需要?jiǎng)?chuàng)建集合。當(dāng)你插入一些文檔時(shí)房匆,MongoDB會自動創(chuàng)建集合耸成。
? ? > db.mycol2.insert({"name" : "菜鳥教程"})
> show collections
mycol2
...
? MongoDB刪除集合
? MongoDB中使用 drop()方法來刪除集合。
語法格式:
db.collection.drop()
參數(shù)說明:
? ? 無
返回值
如果成功刪除選定集合浴鸿,則 drop()方法返回 true井氢,否則返回 false。
我們可以先通過 show collections命令查看已存在的集合:
>use mydb
switched to db mydb
>show collections
mycol
mycol2
system.indexes
runoob
>
接著刪除集合 mycol2 :
>db.mycol2.drop()
true
>
通過 show collections再次查看數(shù)據(jù)庫 mydb中的集合:
>show collections
mycol
system.indexes
runoob
>
從結(jié)果中可以看出 mycol2集合已被刪除岳链。
MongoDB 插入文檔
文檔的數(shù)據(jù)結(jié)構(gòu)和JSON基本一樣花竞。
所有存儲在集合中的數(shù)據(jù)都是BSON格式。
BSON是一種類json的一種二進(jìn)制形式的存儲格式,簡稱Binary JSON掸哑。
插入文檔
MongoDB使用 insert()或 save()方法向集合中插入文檔约急,語法如下:
db.COLLECTION_NAME.insert(document)
實(shí)例
以下文檔可以存儲在 MongoDB的 runoob數(shù)據(jù)庫 的 col集合中:
? ? >db.col.insert({title: 'MongoDB 教程',
? ? ? ? description: 'MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫',
? ? ? ? by: '菜鳥教程',
????????url: 'http://www.runoob.com',
????????tags: ['mongodb', 'database', 'NoSQL'],
????????likes: 100
????????})
以上實(shí)例中 col是我們的集合名,如果該集合不在該數(shù)據(jù)庫中苗分, MongoDB會自動創(chuàng)建該集合并插入文檔厌蔽。
查看已插入文檔:
> db.col.find()
? ? { "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
我們也可以將數(shù)據(jù)定義為一個(gè)變量,如下所示:
? ? > document=({title: 'MongoDB 教程',
? ? ? ? description: 'MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫',
? ? ? ? by: '菜鳥教程',
????????url: 'http://www.runoob.com',
????????tags: ['mongodb', 'database', 'NoSQL'],
????????likes: 100
????????});
執(zhí)行后顯示結(jié)果如下:
{
? ? ? ? "title" : "MongoDB 教程",
? ? ? ? "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫",
? ? ? ? "by" : "菜鳥教程",
????????"url" : "http://www.runoob.com",
????????"tags" : [
????????????????"mongodb",
????????????????"database",
????????????????"NoSQL"
????????],
????????"likes" : 100
????}
執(zhí)行插入操作:
> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
>
插入文檔你也可以使用 db.col.save(document)命令俭嘁。如果不指定 _id字段 save()方法類似于 insert()方法躺枕。如果指定 _id字段,則會更新該 _id的數(shù)據(jù)供填。
插入多個(gè)文檔
db.col.insert([{
????????"title": 'MongoDB Overview',
????????"description": 'MongoDB is no sql database',
????????"by_user": 'runoob.com',
????????"url": 'http://www.runoob.com',
????????"tags": ['mongodb', 'database', 'NoSQL'],
????????"likes": 100
},{
????????"title": 'MongoDB Overview',
????????"description": 'No sql database is very fast',
????????"by_user": 'runoob.com',
????????"url": 'http://www.runoob.com',
????????"tags": ['mongodb', 'database', 'NoSQL'],
????????"likes": 10
}
)
MongoDB 更新文檔
MongoDB使用 update()和 save()方法來更新集合中的文檔拐云。接下來讓我們詳細(xì)來看下兩個(gè)函數(shù)的應(yīng)用及其區(qū)別。
update()方法
update()方法用于更新已存在的文檔近她。語法格式如下:
db.collection.update(query,update{
????upsert:boolean?,
????multi: boolean,
????writeConcern:document
})
參數(shù)說明:
* query : update的查詢條件叉瘩,類似sql update查詢內(nèi)where后面的。
* update : update的對象和一些更新的操作符(如$,$inc...)等粘捎,也可以理解為sql update查詢內(nèi)set后面的
* upsert :可選薇缅,這個(gè)參數(shù)的意思是危彩,如果不存在update的記錄,是否插入objNew,true為插入泳桦,默認(rèn)是false汤徽,不插入。
* multi :可選灸撰,mongodb默認(rèn)是false,只更新找到的第一條記錄谒府,如果這個(gè)參數(shù)為true,就把按條件查出來多條記錄全部更新。
* writeConcern :可選浮毯,拋出異常的級別完疫。
通過 update()方法來更新標(biāo)題(title):
? ? >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
? ? WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })? # 輸出信息
> db.col.find().pretty(){
????"_id" : ObjectId("56064f89ade2f21f36b03136"),
????"title" : "MongoDB",
? ? ?"description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫",
? ? ? "by" : "菜鳥教程",
? ? ?"url" : "http://www.runoob.com",
????"tags" : [
????????"mongodb",
????????"database",
????????"NoSQL"
????],
????"likes" : 100
}>
可以看到標(biāo)題(title)由原來的 "MongoDB教程"更新為了 "MongoDB"。
以上語句只會修改第一條發(fā)現(xiàn)的文檔债蓝,如果你要修改多條相同的文檔壳鹤,則需要設(shè)置 multi參數(shù)為 true。
? ? >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
在3.2版本開始饰迹,MongoDB提供以下更新集合文檔的方法:
db.collection.updateOne()向指定集合更新單個(gè)文檔
db.collection.updateMany()向指定集合更新多個(gè)文檔
首先我們在test集合里插入測試數(shù)據(jù)
use test
db.test_collection.insert( [
{"name":"abc","age":"25","status":"zxc"},
{"name":"dec","age":"19","status":"qwe"},
{"name":"asd","age":"30","status":"nmn"},
] )
更新單個(gè)文檔
> db.test_collection.updateOne({"name":"abc"},{$set:{"age":"28"}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.test_collection.find()
{ "_id" : ObjectId("59c8ba673b92ae498a5716af"), "name" : "abc", "age" : "28", "status" : "zxc" }
{ "_id" : ObjectId("59c8ba673b92ae498a5716b0"), "name" : "dec", "age" : "19", "status" : "qwe" }
{ "_id" : ObjectId("59c8ba673b92ae498a5716b1"), "name" : "asd", "age" : "30", "status" : "nmn" }
>
更新多個(gè)文檔
> db.test_collection.updateMany({"age":{$gt:"10"}},{$set:{"status":"xyz"}})
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
> db.test_collection.find()
{ "_id" : ObjectId("59c8ba673b92ae498a5716af"), "name" : "abc", "age" : "28", "status" : "xyz" }
{ "_id" : ObjectId("59c8ba673b92ae498a5716b0"), "name" : "dec", "age" : "19", "status" : "xyz" }
{ "_id" : ObjectId("59c8ba673b92ae498a5716b1"), "name" : "asd", "age" : "30", "status" : "xyz" }
>
MongoDB 刪除文檔
語法
remove()方法的基本語法格式如下所示:
db.collection.remove(query,justOne)
如果你的 MongoDB是 2.6版本以后的芳誓,語法格式如下:
db.collection.remove(query,{justOne:boolean ,writeConcern:document})
? 參數(shù)說明:
* query :(可選)刪除的文檔的條件。
*? justOne :(可選)如果設(shè)為 true或 1蹦锋,則只刪除一個(gè)文檔兆沙,如果不設(shè)置該參數(shù),或使用默認(rèn)值 false莉掂,則刪除所有匹配條件的文檔葛圃。
* writeConcern :(可選)拋出異常的級別。
移除 title為 'MongoDB教程'的文檔:
? ? >db.col.remove({'title':'MongoDB 教程'})
? ? WriteResult({ "nRemoved" : 2 })? ? ? ? ? # 刪除了兩條數(shù)據(jù)
>db.col.find()
? ? ……? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 沒有數(shù)據(jù)
如果你只想刪除第一條找到的記錄可以設(shè)置 justOne為 1憎妙,如下所示:
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
如果你想刪除所有數(shù)據(jù)库正,可以使用以下方式(類似常規(guī) SQL的 truncate命令):
>db.col.remove({})
>db.col.find()
>
remove()方法已經(jīng)過時(shí)了,現(xiàn)在官方推薦使用 deleteOne()和 deleteMany()方法厘唾。
如刪除集合下全部文檔:
db.inventory.deleteMany({})
刪除 status等于 A的全部文檔:
db.inventory.deleteMany({ status : "A" })
刪除 status等于 D的一個(gè)文檔:
db.inventory.deleteOne( { status: "D" } )
remove()方法 并不會真正釋放空間褥符。
需要繼續(xù)執(zhí)行 db.repairDatabase()來回收磁盤空間。
> db.repairDatabase()
或者
> db.runCommand({ repairDatabase: 1 })
?MongoDB 查詢文檔
MongoDB查詢文檔使用 find()方法抚垃。
find()方法以非結(jié)構(gòu)化的方式來顯示所有文檔喷楣。
語法
MongoDB查詢數(shù)據(jù)的語法格式如下:
db.collection.find(query, projection)
* query:可選,使用查詢操作符指定查詢條件
projection:可選鹤树,使用投影操作符指定返回的鍵铣焊。查詢時(shí)返回文檔中所有鍵值, 只需省略該參數(shù)即可(默認(rèn)省略)罕伯。
如果你需要以易讀的方式來讀取數(shù)據(jù)曲伊,可以使用 pretty()方法,語法格式如下:
>db.col.find().pretty()
pretty()方法以格式化的方式來顯示所有文檔追他。
MongoDB AND 條件
MongoDB的 find()方法可以傳入多個(gè)鍵(key)坟募,每個(gè)鍵(key)以逗號隔開岛蚤,即常規(guī) SQL的 AND條件。
語法格式如下:
>db.col.find({key1:value1, key2:value2}).pretty()
通過 by和 title鍵來查詢 菜鳥教程 中 MongoDB教程 的數(shù)據(jù)
? ? > db.col.find({"by":"菜鳥教程", "title":"MongoDB 教程"}).pretty()
{
????????????"_id" : ObjectId("56063f17ade2f21f36b03133"),
? ? ? ? ? ? "title" : "MongoDB 教程",
? ? ? ? ? ? "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫",
? ? ? ? ? ? "by" : "菜鳥教程",
????????????"url" : "http://www.runoob.com",
????????????"tags" : ["mongodb", "database","NoSQL"],
????????????"likes" : 100
}
類似于 WHERE語句:WHERE by='菜鳥教程' AND title='MongoDB教程'
MongoDB OR 條件
MongoDB OR條件語句使用了關(guān)鍵字 $or,語法格式如下:
>db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty()
實(shí)例
以下實(shí)例中懈糯,我們演示了查詢鍵 by值為 菜鳥教程 或鍵 title值為 MongoDB教程 的文檔涤妒。
? ? >db.col.find({$or:[{"by":"菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
{
????????"_id" : ObjectId("56063f17ade2f21f36b03133"),
? ? ? ? "title" : "MongoDB 教程",
? ? ? ? "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫",
? ? ? ? "by" : "菜鳥教程",
????????"url" : "http://www.runoob.com",
????????"tags" : ["mongodb","database","NoSQL"],
????????"likes" : 100
????}
>
AND 和 OR 聯(lián)合使用
以下實(shí)例演示了 AND和 OR聯(lián)合使用,類似常規(guī) SQL語句為: 'where likes>50 AND (by = '菜鳥教程' OR title = 'MongoDB教程')'
? ? >db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
{
????????"_id" : ObjectId("56063f17ade2f21f36b03133"),
? ? ? ? ? ? "title" : "MongoDB 教程",
? ? ? ? ? ? "description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫",
? ? ? ? ? ? "by" : "菜鳥教程",
????????????"url" : "http://www.runoob.com",
????????????"tags" : ["mongodb","database","NoSQL"],
????????????"likes" : 100
? ?}
補(bǔ)充
如果是 likes 大于 50 小于 80 不能這樣寫:
db.col.find( {? likes: { $gt: 50 ,$lt: 80}} )
projection 參數(shù)的使用方法
projection:可選昂利,使用投影操作符指定返回的鍵届腐。查詢時(shí)返回文檔中所有鍵值, 只需省略該參數(shù)即可(默認(rèn)省略)蜂奸。
db.collection.find(query, projection)
若不指定 projection,則默認(rèn)返回所有鍵硬萍,指定 projection格式如下扩所,有兩種模式
? ? db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的鍵,不返回其他鍵
? ? db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的鍵,返回其他鍵
_id鍵默認(rèn)返回朴乖,需要主動指定 _id:0才會隱藏
兩種模式不可混用(因?yàn)檫@樣的話無法推斷其他鍵是否應(yīng)返回)
? ? db.collection.find(query, {title: 1, by: 0}) // 錯(cuò)誤
只能全1或全0祖屏,除了在inclusion模式時(shí)可以指定_id為0
? ? db.collection.find(query, {_id:0, title: 1, by: 1}) // 正確
若不想指定查詢條件參數(shù) query可以 用 {}代替,但是需要指定 projection參數(shù):
querydb.collection.find({}, {title: 1})
MongoDB 條件操作符
描述
條件操作符用于比較兩個(gè)表達(dá)式并從mongoDB集合中獲取數(shù)據(jù)买羞。
MongoDB中條件操作符有:
* (>)大于 - $gt
* (<)小于 - $lt
* (>=)大于等于 - $gte
* (<= )小于等于 - $lte
###MongoDB 操作符 - $type 實(shí)例
$type操作符是基于BSON類型來檢索集合中匹配的數(shù)據(jù)類型袁勺,并返回結(jié)果。
MongoDB中可以使用的類型如下表所示:
想獲取 "col"集合中 title為 String的數(shù)據(jù)畜普,你可以使用以下命令:
db.col.find({"title" : {$type : 2}})
? ? 或
db.col.find({"title" : {$type : 'string'}})
MongoDB Limit() 方法
在MongoDB中讀取指定數(shù)量的數(shù)據(jù)記錄期丰,可以使用MongoDB的Limit方法,limit()方法接受一個(gè)數(shù)字參數(shù)吃挑,該參數(shù)指定從MongoDB中讀取的記錄條數(shù)钝荡。
語法
limit()方法基本語法如下所示:
>db.COLLECTION_NAME.find().limit(NUMBER)
顯示查詢文檔中的兩條記錄:
> db.col.find({},{"title":1,_id:0}).limit(2)
注:如果你們沒有指定limit()方法中的參數(shù)則顯示集合中的所有數(shù)據(jù)。
MongoDB Skip() 方法
我們除了可以使用limit()方法來讀取指定數(shù)量的數(shù)據(jù)外舶衬,還可以使用skip()方法來跳過指定數(shù)量的數(shù)據(jù)埠通,skip方法同樣接受一個(gè)數(shù)字參數(shù)作為跳過的記錄條數(shù)。
語法
skip()方法腳本語法格式如下:
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
實(shí)例
以下實(shí)例只會顯示第二條文檔數(shù)據(jù)
>db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
? ? { "title" : "Java 教程" }
>
注:skip()方法默認(rèn)參數(shù)為 0逛犹。
MongoDB 排序
在 MongoDB中使用 sort()方法對數(shù)據(jù)進(jìn)行排序端辱,sort()方法可以通過參數(shù)指定排序的字段,并使用 1和 -1來指定排序的方式虽画,其中 1為升序排列舞蔽,而 -1是用于降序排列。
語法
sort()方法基本語法如下所示:
>db.COLLECTION_NAME.find().sort({KEY:1})
當(dāng)sort,skip,limit一起使用時(shí)狸捕,無論其位置變化喷鸽,總是先sort再skip,最后limit灸拍。
如果要改變執(zhí)行順序做祝,用aggregate
MongoDB 索引
索引通常能夠極大的提高查詢的效率砾省,如果沒有索引,MongoDB在讀取數(shù)據(jù)時(shí)必須掃描集合中的每個(gè)文件并選取那些符合查詢條件的記錄混槐。
這種掃描全集合的查詢效率是非常低的编兄,特別在處理大量的數(shù)據(jù)時(shí),查詢可以要花費(fèi)幾十秒甚至幾分鐘声登,這對網(wǎng)站的性能是非常致命的狠鸳。
索引是特殊的數(shù)據(jù)結(jié)構(gòu),索引存儲在一個(gè)易于遍歷讀取的數(shù)據(jù)集合中悯嗓,索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)
createIndex()方法
MongoDB使用 createIndex()方法來創(chuàng)建索引件舵。
? ? 注意在 3.0.0 版本前創(chuàng)建索引方法為 db.collection.ensureIndex(),之后的版本使用了 db.collection.createIndex() 方法脯厨,ensureIndex() 還能用铅祸,但只是 createIndex() 的別名。
語法
createIndex()方法基本語法格式如下所示:
>db.collection.createIndex(keys, options)
語法中 Key值為你要?jiǎng)?chuàng)建的索引字段合武,1為指定按升序創(chuàng)建索引临梗,如果你想按降序來創(chuàng)建索引指定為 -1即可。
實(shí)例
>db.col.createIndex({"title":1})
>
createIndex()方法中你也可以設(shè)置使用多個(gè)字段創(chuàng)建索引(關(guān)系型數(shù)據(jù)庫中稱作復(fù)合索引)稼跳。
>db.col.createIndex({"title":1,"description":-1})
>
createIndex()接收可選參數(shù)盟庞,可選參數(shù)列表如下:
在后臺創(chuàng)建索引:
db.values.createIndex({open: 1, close: 1}, {background: true})
通過在創(chuàng)建索引時(shí)加 background:true的選項(xiàng),讓創(chuàng)建工作在后臺執(zhí)行
* 1汤善、查看集合索引
? db.col.getIndexes()
2什猖、查看集合索引大小
db.col.totalIndexSize()
* 3、刪除集合所有索引
? db.col.dropIndexes()
* 4萎津、刪除集合指定索引
? ? ? ? db.col.dropIndex("索引名稱")
MongoDB 聚合
MongoDB中聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計(jì)平均值,求和等)卸伞,并返回計(jì)算后的數(shù)據(jù)結(jié)果。有點(diǎn)類似sql語句中的 count(*)锉屈。
aggregate()方法
MongoDB中聚合的方法使用aggregate()荤傲。
語法
aggregate()方法的基本語法格式如下所示:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
計(jì)算每個(gè)作者所寫的文章數(shù),使用aggregate()計(jì)算結(jié)果如下:
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{"result" : [{"_id" : "runoob.com","num_tutorial" : 2},{"_id" : "Neo4j","num_tutorial" : 1}],"ok" : 1}
>
以上實(shí)例類似sql語句:
select by_user, count(*) from mycol group by by_user
在上面的例子中颈渊,我們通過字段 by_user字段對數(shù)據(jù)進(jìn)行分組遂黍,并計(jì)算 by_user字段相同值的總和。
下表展示了一些聚合的表達(dá)式: