一、MongoDB是什么
MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品镶苞,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富蝶柿,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散驰凛,是類似json的bson格式胸懈,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。MongoDB最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大恰响,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言趣钱,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引胚宦。
二首有、bson相對(duì)于json的優(yōu)點(diǎn)
bson燕垃,基于json格式,是MongoDB的數(shù)據(jù)存儲(chǔ)格式井联。bson相對(duì)于json有一下幾個(gè)優(yōu)點(diǎn)卜壕。
1.遍歷
對(duì)json格式來說,太大的結(jié)構(gòu)會(huì)導(dǎo)致數(shù)據(jù)遍歷非常慢烙常。在json中轴捎,要跳過一個(gè)文檔進(jìn)行數(shù)據(jù)讀取,需要對(duì)此文檔進(jìn)行掃描军掂。而在bson中轮蜕,可以直接定位到我們所要找的位置昨悼。簡(jiǎn)單的說蝗锥,json的存儲(chǔ)類似于字符串,而bson是按結(jié)構(gòu)存儲(chǔ)的率触。存儲(chǔ)空間bson>json终议,解析速度bson快于json。
2.修改
對(duì)json來說葱蝗,數(shù)據(jù)存儲(chǔ)是無類型的穴张,比如你要修改基本一個(gè)值,從9到10两曼,由于從一個(gè)字符變成了兩個(gè)皂甘,所以可能其后面的所有內(nèi)容都需要往后移一位才可以。而使用bson悼凑,你可以指定這個(gè)列為數(shù)字列偿枕,那么無論數(shù)字從9長(zhǎng)到10還是100,我們都只是在存儲(chǔ)數(shù)字的那一位上進(jìn)行修改户辫,不會(huì)導(dǎo)致數(shù)據(jù)總長(zhǎng)變大渐夸。
三、MongoDB的下載以及圖形界面工具
MongoDB的下載地址:https://www.mongodb.com/download-center?jmp=nav#atlas
關(guān)于MongoDB的下載與配置渔欢,已有許多相關(guān)資料墓塌,這里不再描述。
MongoDB和MySQL一樣奥额,沒有直接的圖形界面苫幢,是在命令行中進(jìn)行操作的。這樣的操作麻煩而且不直觀垫挨,當(dāng)然官方也給出了相應(yīng)的圖形界面工具韩肝,但是這里我們采用第三方的圖形界面工具Robo 3T 。
Robo 3T的下載地址:https://robomongo.org/
四棒拂、使用Robo 3T進(jìn)行簡(jiǎn)單的增刪改查
1伞梯、創(chuàng)建連接
打開Robo 3T玫氢,點(diǎn)擊左上角的Create可以新建連接。如圖谜诫,我們已經(jīng)建立了名為mongodb的連接漾峡。
選擇相應(yīng)的連接,點(diǎn)擊Connect進(jìn)行連接喻旷,進(jìn)入Robo 3T主界面生逸。
2、創(chuàng)建數(shù)據(jù)庫
右鍵左上角的連接名且预,點(diǎn)擊Create Database槽袄。
輸入數(shù)據(jù)庫名,Create锋谐。這里遍尺,我們創(chuàng)建名為test1的數(shù)據(jù)庫。
創(chuàng)建完成后涮拗,可以看到test1下有Collections乾戏,F(xiàn)unctions和Users三部分。Collections表示集合三热,F(xiàn)unctions表示函數(shù)鼓择,Users表示用戶。
右鍵Collections就漾,選擇Create Collection呐能,輸入集合名,即可創(chuàng)建集合抑堡。我們創(chuàng)建一個(gè)名為collection1的集合摆出。
3、增
(1)使用圖形化插入
右鍵collection1夷野,點(diǎn)擊Insert Document懊蒸,即可進(jìn)行插入。我們添加如下信息悯搔,點(diǎn)擊Save骑丸。
右鍵test1數(shù)據(jù)庫,點(diǎn)擊Open Shell妒貌,輸入如下命令通危,點(diǎn)擊左上方的綠色三角形運(yùn)行,來查看我們添加的信息灌曙。
(2)使用nosql語句插入
在shell中輸入如下語句菊碟,點(diǎn)擊運(yùn)行。
(這樣是在插入在新的Document中在刺,如果要插入在已有的Document下逆害,采用update头镊,在下面會(huì)講到。)
查看魄幕。
4相艇、刪
(1)使用圖形化刪除
右鍵點(diǎn)擊一條記錄,選擇Edit Document纯陨,彈出和插入時(shí)一樣的窗口坛芽,直接將要?jiǎng)h掉的內(nèi)容刪除,點(diǎn)擊save即可翼抠。
這樣刪除的是Document下的記錄咙轩。如果要?jiǎng)h除整個(gè)Document,點(diǎn)擊Delete Document阴颖。
(2)使用nosql語句刪除
在shell中輸入如下語句活喊,點(diǎn)擊運(yùn)行。
(這樣刪除的是整個(gè)Document膘盖,如果要?jiǎng)h除已有的Document下的內(nèi)容胧弛,采用Update尤误,在下面會(huì)講到侠畔。)
如果remove({}),將會(huì)刪除當(dāng)前collection中的所有Document损晤,千萬不要手賤喲软棺。
5、改
(1)使用圖形化修改
右鍵點(diǎn)擊一條記錄尤勋,選擇Edit Document喘落,彈出和插入時(shí)一樣的窗口,直接進(jìn)行修改最冰,點(diǎn)擊save即可瘦棋。
(2)使用nosql語句修改
在shell中輸入如下語句,點(diǎn)擊運(yùn)行暖哨。
upsert=true表示如果不存在則插入赌朋。multi=true表示允許修改多條記錄 。
下面這條語句表示將含有"c":1的Document下的"c":1改為"c":3篇裁。
下面這條語句表示將含有"c":1的Document下的key為"e"的value改為3沛慢。
下面這條語句表示將含有"c":1的Document下的"e":3刪除。
下面這條語句表示刪除所有Document下的"e":3达布。
6团甲、查
(1)使用圖形化查詢
右鍵collection1,點(diǎn)擊View Document黍聂,直接查看collection1下所有的Document躺苦。
(2)使用nosql語句查詢
在shell中輸入如下語句身腻,點(diǎn)擊運(yùn)行。
下面這條語句表示查詢collection1下的所有Document匹厘。
下面這條語句表示查詢collection1下包含"c":2的所有Document霸株。
下面這條語句表示查詢collection1下包含"c":2的一個(gè)Document。
下面這條語句表示查詢collection1下包含"c":2的兩個(gè)Document集乔。
下面這條語句表示查詢collection1下包含"c":2的所有Document去件,并按age正序排列。
下面這條語句表示查詢collection1下包含"c":2的所有Document扰路,并按age倒序排列尤溜。
下面這條語句表示統(tǒng)計(jì)collection1下的Document數(shù)。
下面這條語句表示找出age>27的Document汗唱。(有多個(gè)key為age時(shí)宫莱,以find時(shí)顯示在最上面的age為準(zhǔn),下同)
下面這條語句表示找出age≥27的Document哩罪。
下面這條語句表示找出age<27的Document授霸。
下面這條語句表示找出age≤27的Document。