MongoDB總結(jié)

首先我們先了解下什么是MongoDB ?

MongoDB 是由C++語言編寫的题造,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)傍菇。 在大量數(shù)據(jù)下,承載性能好界赔。

MongoDB 將數(shù)據(jù)存儲為一個文檔丢习,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象淮悼。字段值可以包含其他文檔咐低,數(shù)組及文檔數(shù)組。

它和MySQL的區(qū)別嗎吶在于

? ? ? ? ? ?mongodb:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 優(yōu)點(diǎn): ? ?非關(guān)系型的數(shù)據(jù)庫袜腥。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 相對于mysql來說见擦,它不需要提前創(chuàng)建表,以及表結(jié)構(gòu),為我們省? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 去了很多的不便

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 存儲持久化鲤屡,面向集合存儲儡湾;易存儲對象類型的數(shù)據(jù)。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 性能方面能夠快速查詢(?支持動態(tài)查詢执俩,完全索引徐钠。)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? json格式存儲。


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?缺點(diǎn):? ?MongoDB占用空間過大?役首。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 因?yàn)樗欠顷P(guān)系型尝丐,所以關(guān)系能力比較薄弱。

? ? ? ? ?? mysql:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 優(yōu)點(diǎn): 關(guān)系型數(shù)據(jù)庫衡奥。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不同的引擎有不同的存儲方法爹袁。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?有較為成熟健全的體系。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?缺點(diǎn):? 在海量數(shù)據(jù)進(jìn)行查詢的時候性能效率慢矮固。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?在創(chuàng)建數(shù)據(jù)庫失息,表的時候比較費(fèi)時,特別是在創(chuàng)建表的時候設(shè)定? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 的字段需要特別注意档址。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查詢數(shù)據(jù)信息的時候盹兢,有的語法較為復(fù)雜,費(fèi)時守伸。

接下來總結(jié)性的mongodb的語法:

Linux(Ubuntu16.04)

啟動 MongoDB?:

sudo ? service ? ?mongod ? start

創(chuàng)建數(shù)據(jù)庫:

use?database_name

注:(如果數(shù)據(jù)庫不存在绎秒,則創(chuàng)建數(shù)據(jù)庫,否則切換到指定數(shù)據(jù)庫)

刪除數(shù)據(jù)庫:

db.dropDatabase()

查看所有數(shù)據(jù)庫:

show dbs

MongoDB 創(chuàng)建集合:

db.createCollection()

MongoDB 刪除集合:

db.collection.drop()

MongoDB?插入文檔:

db.COLLECTION_NAME.insert(document)

MongoDB 更新文檔:

db.collection.update()

MongoDB 刪除文檔:

db.collection.remove()

MongoDB 查詢文檔:

db.collection.find()

MongoDB AND 條件:

>db.col.find({key1:value1,?key2:value2}).pretty()

注:(MongoDB 的 find() 方法可以傳入多個鍵(key)尼摹,每個鍵(key)以逗號隔開见芹,即常規(guī) SQL 的 AND 條件)

MongoDB OR 條件:

MongoDB OR 條件語句使用了關(guān)鍵字?$or,

db.col.find({$or:[{"by":"肖申克的救贖"},{"title":?"人性/現(xiàn)實(shí)"}]}).pretty()

MongoDB?條件操作符:

作用:條件操作符用于比較兩個表達(dá)式并從mongoDB集合中獲取數(shù)據(jù)。

(>) 大于 - $gt

(<) 小于 - $lt

(>=) 大于等于 - $gte

(<= ) 小于等于 - $lte

大于操作符 - $gt:

db.col.find({likes?:?{$gt?:?100}})

大于等于操作符 - $gte:

db.col.find({likes?:?{$gte?:?100}})

小于操作符 - $lt:

db.col.find({likes?:?{$lt?:?150}})

小于操作符 - $lte:

db.col.find({likes?:?{$lte?:?150}})

使用 (小于) 和 (大于) 查詢 - $lt 和 $gt:

db.col.find({likes?:?{$lt?:200,?$gt?:?100}})

MongoDB Limit() 方法:

作用:指定從MongoDB中讀取的記錄條數(shù)

db.collection_name.find().limit(number)

MongoDB Skip() 方法:

作用:跳過指定數(shù)量的數(shù)據(jù)

db.collection_name.find().limit(number).skip(number)

MongoDB 排序sort() 方法:

作用: ?用 1 和 -1 來指定排序的方式蠢涝,其中 1 為升序排列玄呛,而 -1 是用于降序排列。

db.collection_name.find().sort({key:1(-1)})

MongoDB 索引 ?createIndex() 方法:

db.col.createIndex({"title":1})

注: ??語法中 Key 值為你要創(chuàng)建的索引字段和二,1 為指定按升序創(chuàng)建索引徘铝,如果你想按降序來創(chuàng)建索引指定為 -1。

MongoDB 聚合:

作用: ??聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計(jì)平均值,求和等)儿咱,并返回計(jì)算后的數(shù)據(jù)結(jié)果庭砍。有點(diǎn)類似sql語句中的 count(*)场晶。

db.collection_name.aggregate(aggregate_operation)

MongoDB 備份(mongodump)

在Mongodb中我們使用mongodump命令來備份MongoDB數(shù)據(jù)混埠。該命令可以導(dǎo)出所有數(shù)據(jù)到指定目錄中。

mongodump -h dbhost -d dbname -o dbdirectory

-h:MongDB所在服務(wù)器地址诗轻,例如:127.0.0.1钳宪,當(dāng)然也可以指定端口號:127.0.0.1:27017

-d:需要備份的數(shù)據(jù)庫實(shí)例,例如:test

-o:備份的數(shù)據(jù)存放位置,例如:c:\data\dump吏颖,當(dāng)然該目錄需要提前建立搔体,在備份完成后,系統(tǒng)自動在dump目錄下建立一個test目錄半醉,這個目錄里面存放該數(shù)據(jù)庫實(shí)例的備份數(shù)據(jù)

如果沒有開啟權(quán)限

mongodump -h 127.0.0.1:27017 -d 數(shù)據(jù)庫名稱 -o ~/Desktop/數(shù)據(jù)庫備份的路徑

mongodump -h 127.0.0.1:27017 -o ~/Desktop/數(shù)據(jù)庫備份的路徑

如果開啟了權(quán)限設(shè)置(使用超級管理員權(quán)限)

我們也可以使用賬號密碼的方式備份指定用戶的數(shù)據(jù)庫

設(shè)置了超級管理員也可以使用如下方法備份

mongodump -u username -p password --authenticationDatabase 'admin' -d dbname -o dbpath

恢復(fù)備份

mongodb使用?mongorestore?命令來恢復(fù)備份的數(shù)據(jù)疚俱。

mongorestore -h hostname:port -d dbname? --dir path

-h (host):MongoDB所在服務(wù)器地址,默認(rèn)為: localhost:27017

-d (db):需要恢復(fù)的數(shù)據(jù)庫實(shí)例缩多,例如:test呆奕,當(dāng)然這個名稱也可以和備份時候的不一樣,比如test2

--dir:指定備份的目錄

如果沒有開啟權(quán)限

mongorestore -h 127.0.0.1:27017 -d 數(shù)據(jù)庫名稱 --dir 數(shù)據(jù)庫備份文件路徑

mongorestore -h 127.0.0.1 -dir 數(shù)據(jù)庫備份文件路徑

下面是我添加了管理員權(quán)限之后的備份命令

如果開啟了權(quán)限設(shè)置(使用超級管理員權(quán)限)

mongorestore -u username -p password --authenticationDatabase 'admin' -d 數(shù)據(jù)庫名稱 --dir 數(shù)據(jù)庫備份文件路徑


MongoDB數(shù)據(jù)導(dǎo)入與導(dǎo)出

導(dǎo)出工具:mongoexport

mongoexport -d dbname -c collectionname -o file --type json/csv -f field

參數(shù)說明:

d :數(shù)據(jù)庫名

c :collection名

o :輸出的文件名

-type : 輸出的格式衬吆,默認(rèn)為json

f :輸出的字段梁钾,如果-type為csv,則需要加上-f "字段名"

示例

導(dǎo)出json

mongoexport -d class1804 -c books -o ~/桌面/dump/books.json --type json

導(dǎo)出csv

mongoexport -d class1804 -c books -o ~/桌面/dump/books.csv --type csv -f 'by_user,likes'

數(shù)據(jù)導(dǎo)入:mongoimport

mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv

參數(shù)說明:

d:數(shù)據(jù)庫名

c:collection名

-type:導(dǎo)入的格式默認(rèn)json

f:導(dǎo)入的字段名

-headerline:如果導(dǎo)入的格式是csv逊抡,則可以使用第一行的標(biāo)題作為導(dǎo)入的字段

-file:要導(dǎo)入的文件


MongoDB 復(fù)制(副本集)

作用: ??是將數(shù)據(jù)同步在多個服務(wù)器的過程姆泻,復(fù)制還允許從硬件故障和服務(wù)中斷中恢復(fù)數(shù)據(jù)。

MongoDB復(fù)制原理

mongodb的復(fù)制至少需要兩個節(jié)點(diǎn)冒嫡。其中一個是主節(jié)點(diǎn)拇勃,負(fù)責(zé)處理客戶端請求,其余的都是從節(jié)點(diǎn)孝凌,負(fù)責(zé)復(fù)制主節(jié)點(diǎn)上的數(shù)據(jù)潜秋。

mongodb各個節(jié)點(diǎn)常見的搭配方式為:一主一從、一主多從胎许。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末峻呛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辜窑,更是在濱河造成了極大的恐慌钩述,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穆碎,死亡現(xiàn)場離奇詭異牙勘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)所禀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門方面,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人色徘,你說我怎么就攤上這事恭金。” “怎么了褂策?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵横腿,是天一觀的道長颓屑。 經(jīng)常有香客問我,道長耿焊,這世上最難降的妖魔是什么揪惦? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮罗侯,結(jié)果婚禮上器腋,老公的妹妹穿的比我還像新娘。我一直安慰自己钩杰,他們只是感情好蒂培,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榜苫,像睡著了一般护戳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垂睬,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天媳荒,我揣著相機(jī)與錄音,去河邊找鬼驹饺。 笑死钳枕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赏壹。 我是一名探鬼主播鱼炒,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蝌借!你這毒婦竟也來了昔瞧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤菩佑,失蹤者是張志新(化名)和其女友劉穎自晰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稍坯,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酬荞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞧哟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片混巧。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖勤揩,靈堂內(nèi)的尸體忽然破棺而出咧党,到底是詐尸還是另有隱情,我是刑警寧澤雄可,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布凿傅,位于F島的核電站,受9級特大地震影響数苫,放射性物質(zhì)發(fā)生泄漏聪舒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一虐急、第九天 我趴在偏房一處隱蔽的房頂上張望箱残。 院中可真熱鬧,春花似錦止吁、人聲如沸被辑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盼理。三九已至,卻和暖如春俄删,著一層夾襖步出監(jiān)牢的瞬間宏怔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工畴椰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臊诊,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓斜脂,卻偏偏與公主長得像抓艳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子帚戳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

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