MongoDB的使用

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á)式:


聚合表達(dá)式

文章參考:http://www.runoob.com/mongodb/mongodb-tutorial.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俊嗽,一起剝皮案震驚了整個(gè)濱河市雾家,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绍豁,老刑警劉巖芯咧,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡敬飒,警方通過查閱死者的電腦和手機(jī)邪铲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來无拗,“玉大人带到,你說我怎么就攤上這事∮⑷荆” “怎么了揽惹?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長四康。 經(jīng)常有香客問我搪搏,道長,這世上最難降的妖魔是什么闪金? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任慕嚷,我火速辦了婚禮,結(jié)果婚禮上毕泌,老公的妹妹穿的比我還像新娘。我一直安慰自己嗅辣,他們只是感情好撼泛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著澡谭,像睡著了一般愿题。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛙奖,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天潘酗,我揣著相機(jī)與錄音,去河邊找鬼雁仲。 笑死仔夺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的攒砖。 我是一名探鬼主播缸兔,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吹艇!你這毒婦竟也來了惰蜜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤受神,失蹤者是張志新(化名)和其女友劉穎抛猖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡财著,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年联四,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓢宦。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碎连,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驮履,到底是詐尸還是另有隱情鱼辙,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布玫镐,位于F島的核電站倒戏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏恐似。R本人自食惡果不足惜杜跷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矫夷。 院中可真熱鬧葛闷,春花似錦、人聲如沸双藕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忧陪。三九已至扣泊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嘶摊,已是汗流浹背延蟹。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叶堆,地道東北人阱飘。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蹂空,于是被迫代替她去往敵國和親俯萌。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1上枕、MongoDB概念解析: 2咐熙、數(shù)據(jù)庫: "show dbs"命令可以顯示所有數(shù)據(jù)的列表。"db"命令可以顯示當(dāng)...
    妮妮愛布閱讀 585評論 0 0
  • MongoDB文檔 MongoDB 概念解析 不管我們學(xué)習(xí)什么數(shù)據(jù)庫都應(yīng)該學(xué)習(xí)其中的基礎(chǔ)概念辨萍,在mongodb中基...
    birdflying閱讀 1,990評論 0 27
  • 在客戶端指定數(shù)據(jù)庫進(jìn)行連接:(默認(rèn)連接本機(jī)test數(shù)據(jù)庫) [mongod@MongoDB ~]$ mongo10...
    xueyue77閱讀 214評論 0 0
  • 簡介 MongoDB 是一個(gè)基于分布式文件存儲的數(shù)據(jù)庫棋恼。由 C++ 語言編寫返弹。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性...
    birjemin閱讀 305評論 0 1
  • 當(dāng)我讀到“鳳凰涅磐”這幾個(gè)字的時(shí)候义起,腦海中會浮現(xiàn)一只鳳凰沖進(jìn)熊熊的烈火,然后涅槃飛向九天的畫面师崎,鳳凰在百般...
    水到渠成111閱讀 237評論 0 3