摘要:我們后續(xù)的數(shù)據(jù)庫(kù)操作需要再開(kāi)一個(gè)。接下去我們就進(jìn)入了的語(yǔ)法環(huán)境下,可以輸入命令進(jìn)行數(shù)據(jù)庫(kù)的操作。在上述命令當(dāng)中,如果數(shù)據(jù)庫(kù)與集合名均為不存在的,則一并完成了新建的操作。
mongodb是文檔型數(shù)據(jù)庫(kù),其官網(wǎng)地址為 https://www.mongodb.com/。我們?cè)诠倬W(wǎng)上下載該軟件包,并完成安裝。如我們可以設(shè)置安裝路徑為D:MongoDBmongodb。我們?cè)谕瓿砂惭b之后,可以看到在該目錄的bin文件夾下有如下文件:
接下去我們配置環(huán)境變量,為了能在任意目錄下都能運(yùn)行bin這個(gè)文件夾下的應(yīng)用程序。我們?cè)诃h(huán)境變量的用戶(hù)變量當(dāng)中新建一個(gè)名為Mongodb的變量,其變量值為D:MongoDBmongodbin。接下去編輯用戶(hù)變量當(dāng)中的PATH變量值,在其值后面加上;%Mongodb%;。最后確定關(guān)閉完成了環(huán)境變量的配置。接下去在cmd當(dāng)中,鍵入命令-> mongo,顯示如下結(jié)果,則說(shuō)明安裝和配置成功。
一、Mongodb數(shù)據(jù)庫(kù)的開(kāi)機(jī)與連接這里我們可以看到可以正確顯示我們安裝的mongodb的版本號(hào),在此顯示連接失敗是因?yàn)槲覀冞€沒(méi)進(jìn)行數(shù)據(jù)庫(kù)開(kāi)機(jī)的操作。
由于mongodb為文檔型的數(shù)據(jù)庫(kù),它不同于mysql等數(shù)據(jù)庫(kù),它的數(shù)據(jù)庫(kù)真實(shí)可見(jiàn),與我們本機(jī)上的物理文件一一對(duì)應(yīng)。故我們需要先建立一個(gè)文件夾,作為數(shù)據(jù)庫(kù)真實(shí)存放的位置。比如我們?cè)?b>D盤(pán)根目錄下新建一個(gè)名為mongo的文件夾,則該數(shù)據(jù)庫(kù)文檔所在文件夾的絕對(duì)物理路徑為D:mongo。
接下去我們打開(kāi)cmd,輸入開(kāi)機(jī)命令-> mongod --dbpath D:mongo。此時(shí)可以看到控制臺(tái)在最后一行輸出waiting for connections on port 27017,則說(shuō)明此時(shí)數(shù)據(jù)庫(kù)完成了開(kāi)機(jī)操作。
此時(shí)在我們新建的mongo文件夾下多了如下所示的默認(rèn)文件:
在開(kāi)機(jī)命令當(dāng)中--dbpath用于選擇數(shù)據(jù)庫(kù)文檔所在的文件夾,是數(shù)據(jù)庫(kù)真實(shí)存放的位置。在該文件夾下,所有以.ns為后綴名的文件都為數(shù)據(jù)庫(kù),即mongodb中數(shù)據(jù)庫(kù)真實(shí)可見(jiàn),有物理文件與數(shù)據(jù)庫(kù)一一對(duì)應(yīng)。
在完成數(shù)據(jù)庫(kù)的開(kāi)機(jī)操作之后,我們一定要讓這個(gè)cmd面板保持上圖所示的狀態(tài),不能關(guān)閉,不能退出程序。一旦該cmd出現(xiàn)問(wèn)題,我們的數(shù)據(jù)庫(kù)就自動(dòng)關(guān)閉了。我們后續(xù)的數(shù)據(jù)庫(kù)操作需要再開(kāi)一個(gè)cmd。
接下去我們?cè)匍_(kāi)一個(gè)cmd,輸入命令-> mongo 用于連接數(shù)據(jù)庫(kù)。當(dāng)顯示如下所示,則說(shuō)明數(shù)據(jù)庫(kù)連接成功。
接下去我們就進(jìn)入了mongodb的語(yǔ)法環(huán)境下,可以輸入命令進(jìn)行數(shù)據(jù)庫(kù)的操作。
我們用命令-> show dbs來(lái)顯示當(dāng)前所有的數(shù)據(jù)庫(kù)。(現(xiàn)在只有一些系統(tǒng)默認(rèn)的數(shù)據(jù)庫(kù)文件,這些系統(tǒng)自帶的文件,我們不做任何操作)
我們用命令-> use test來(lái)表示使用某個(gè)數(shù)據(jù)庫(kù),當(dāng)use一個(gè)不存在的數(shù)據(jù)庫(kù)則表示新建。之后再用命令-> db來(lái)查看當(dāng)前所在的數(shù)據(jù)庫(kù)。我們?cè)谕瓿?b>test數(shù)據(jù)庫(kù)的新建之后,用-> show dbs查看現(xiàn)在所有的數(shù)據(jù)庫(kù),仍然看不到我們新建的那個(gè)數(shù)據(jù)庫(kù),說(shuō)明我們想把這個(gè)數(shù)據(jù)庫(kù)新建成功,則必須往里面插入一條數(shù)據(jù)。
mongodb的某個(gè)數(shù)據(jù)庫(kù)由很多個(gè)集合(collection)組成,集合類(lèi)似于mysql數(shù)據(jù)庫(kù)當(dāng)中數(shù)據(jù)表的概念,而每一個(gè)集合又由很多個(gè)文檔(document)構(gòu)成。每一個(gè)文檔都是一個(gè)json對(duì)象,文檔類(lèi)似于mysql數(shù)據(jù)表當(dāng)中字段的概念。數(shù)據(jù)庫(kù)當(dāng)中不能直接插入數(shù)據(jù),只能往該數(shù)據(jù)庫(kù)的某個(gè)指定集合當(dāng)中插入數(shù)據(jù),集合不需要新建,一旦我們往某個(gè)集合當(dāng)中插入數(shù)據(jù),就相當(dāng)于新建了這個(gè)集合,并且該集合當(dāng)中也有了對(duì)應(yīng)的數(shù)據(jù)。
我們?cè)?b>cmd當(dāng)中用命令-> db來(lái)確定當(dāng)前所在的數(shù)據(jù)庫(kù)為test,接下去用命令-> db.student.insert()往該集合當(dāng)中插入一個(gè)json對(duì)象。這句操作完成了在test數(shù)據(jù)庫(kù)中student這個(gè)集合的創(chuàng)建與一條文檔數(shù)據(jù)的插入。接下去可用命令-> show collections來(lái)列出當(dāng)前這個(gè)數(shù)據(jù)庫(kù)當(dāng)中所有的集合(其中system.indexes為系統(tǒng)默認(rèn)的集合,不做任何處理)。用命令-> db.student.find()來(lái)列出當(dāng)前這個(gè)數(shù)據(jù)庫(kù)中student這個(gè)集合當(dāng)中所有的文檔數(shù)據(jù)。如下圖所示:
二、MongoVUE的使用此時(shí)可以看到mongo這個(gè)文件夾下多了test.0與test.ns這兩個(gè)文件。每一條文檔數(shù)據(jù)都為一個(gè)json數(shù)據(jù),插入文檔時(shí)應(yīng)該讓其符合嚴(yán)格的json語(yǔ)法。數(shù)據(jù)庫(kù)當(dāng)中每一條文檔數(shù)據(jù)都會(huì)被分配一個(gè)唯一的_id屬性值。
MongoVUE是Mongodb的一款可視化管理工具。我們?cè)谕瓿砂惭b之后,手動(dòng)啟動(dòng)MongoVUE.exe進(jìn)入其管理界面。在第一次使用時(shí),在彈出框Connect to Mongo Database當(dāng)中選擇新建,填寫(xiě)如下信息:
我們?cè)?b>server當(dāng)中填寫(xiě)127.0.0.1,表示連接本地?cái)?shù)據(jù)庫(kù),當(dāng)輸入指定的IP地址還可用于連接遠(yuǎn)程的數(shù)據(jù)庫(kù)。而port端口號(hào)為默認(rèn)的27017即可。保存后選擇連接即可。
我們一定要在完成數(shù)據(jù)庫(kù)的開(kāi)機(jī)操作之后,才可以使用MongoVUE對(duì)該數(shù)據(jù)庫(kù)進(jìn)行連接,否則會(huì)顯示連接失敗。
在完成連接之后我們可以看到:
在該面板的左側(cè)邊欄可以看到我們當(dāng)前所有的數(shù)據(jù)庫(kù),其中admin與local為系統(tǒng)默認(rèn)數(shù)據(jù)庫(kù),我們不對(duì)其做任何處理。其中test是我們新建的數(shù)據(jù)庫(kù),在其內(nèi)部的Collections的分支下可以看到該數(shù)據(jù)庫(kù)下所有的集合,選中student這個(gè)集合(不用對(duì)其再展開(kāi))右鍵選擇View則可以在右側(cè)面板看到有三種視圖可供選擇,可以顯示這個(gè)集合當(dāng)中所有的文檔及數(shù)據(jù)。
三、Mongodb數(shù)據(jù)庫(kù)的增刪改查操作我們一般在cmd當(dāng)中進(jìn)行數(shù)據(jù)庫(kù)的增刪改查的操作,在可視化面板當(dāng)中查看數(shù)據(jù)庫(kù)當(dāng)中數(shù)據(jù)的存儲(chǔ)情況,即在命令行當(dāng)中進(jìn)行控制操作,在可視化工具當(dāng)中進(jìn)行驗(yàn)證。由于可視化工具不能自動(dòng)刷新,我們?cè)谕瓿刹僮髦?,需要點(diǎn)擊面板左側(cè)的Refresh刷新,然后再選中某個(gè)集合右鍵View才可以查看最新的文檔數(shù)據(jù)。
我們之前操作過(guò)往test數(shù)據(jù)庫(kù)的student集合當(dāng)中插入一條文檔數(shù)據(jù),但是用這種方式在控制臺(tái)當(dāng)中完成數(shù)據(jù)導(dǎo)入效率太低。我們一般把一個(gè)集合當(dāng)中的文檔數(shù)據(jù)用json文件的形式在外部編輯器當(dāng)中編輯完成之后,統(tǒng)一全部導(dǎo)入數(shù)據(jù)庫(kù)的某個(gè)集合當(dāng)中。
在進(jìn)行導(dǎo)入操作時(shí),要再開(kāi)一個(gè)cmd,然后用命令-> mongoimport --db 數(shù)據(jù)庫(kù)名 --collection 集合名 --drop --file json文件的絕對(duì)物理路徑來(lái)進(jìn)行導(dǎo)入操作。
在上述命令當(dāng)中,如果數(shù)據(jù)庫(kù)與集合名均為不存在的,則一并完成了新建的操作。我們?cè)谕獠烤庉嬈鳟?dāng)中完成json文件的編輯,后綴名為.json的文件必須能?chē)?yán)格遵守json格式,key值必須能加雙引號(hào),value值若為字符串類(lèi)型,也必須加雙引號(hào)。直接把該文件拖進(jìn)cmd當(dāng)中,則自動(dòng)顯示該json文件的絕對(duì)物理地址。--drop表示為在往該集合當(dāng)中導(dǎo)入數(shù)據(jù)之前先清空這個(gè)集合。
在完成數(shù)據(jù)的導(dǎo)入之后,我們回到之前連接數(shù)據(jù)庫(kù)的那個(gè)cmd當(dāng)中,用命令-> db來(lái)查看當(dāng)前的使用的數(shù)據(jù)庫(kù)為test,接下去用命令-> db.student.find()來(lái)對(duì)當(dāng)前這個(gè)數(shù)據(jù)庫(kù)的student集合進(jìn)行查詢(xún)操作。若find方法當(dāng)中沒(méi)有參數(shù)則列出該集合當(dāng)中所有的文檔對(duì)象。
可以在find方法當(dāng)中傳入一個(gè)json對(duì)象(這里同樣需要遵循嚴(yán)格的json語(yǔ)法)表示查詢(xún)條件。如果有多個(gè)條件則在該對(duì)象當(dāng)中,用逗號(hào)相隔的鍵值對(duì)表示查詢(xún)條件之間且的關(guān)系。若找到了則輸出對(duì)應(yīng)的文檔,若沒(méi)找到則不輸出結(jié)果,也不會(huì)報(bào)錯(cuò)。
我們給查詢(xún)對(duì)象的某個(gè)屬性值加上{$gt:}表示大于符號(hào),{$lt:}表示小于符號(hào)。如鍵入命令-> db.student.find({"score.Math":{$gt:74}})表示查詢(xún)出數(shù)學(xué)成績(jī)大于74分的文檔對(duì)象。
我們?cè)诓樵?xún)對(duì)象當(dāng)中加上$or:[]表示在該數(shù)組當(dāng)中的每一個(gè)查詢(xún)條件之間為或的關(guān)系,每一個(gè)查詢(xún)條件用一個(gè)json對(duì)象來(lái)表示。如鍵入命令-> db.student.find({$or:[{"age":9},{"score.Math":70}]})表示查詢(xún)出年齡為9歲或數(shù)學(xué)成績(jī)?yōu)?b>70分的文檔對(duì)象。
我們可以在調(diào)用find方法查詢(xún)之后,調(diào)用sort()方法對(duì)查詢(xún)結(jié)果進(jìn)行排序操作。屬性值為1代表為升序排列,屬性值為-1則代表為降序排列。如鍵入命令-> db.student.find().sort({"score.Math":1,"age":-1})表示查詢(xún)出該集合當(dāng)中所有的文檔數(shù)據(jù),先根據(jù)數(shù)學(xué)成績(jī)升序排列,如果數(shù)學(xué)成績(jī)一致,則根據(jù)年齡進(jìn)行逆序排列。(當(dāng)有多個(gè)排序條件時(shí),則按順序確定排序條件的優(yōu)先級(jí))
鍵入命令-> db.dropDatabase()即可刪除當(dāng)前這個(gè)數(shù)據(jù)庫(kù)。鍵入命令-> db.student.drop()即可刪除當(dāng)前這個(gè)數(shù)據(jù)庫(kù)當(dāng)中student這個(gè)集合。使用命令-> db.student.remove()當(dāng)中傳入一個(gè)查詢(xún)對(duì)象則可以把該集合當(dāng)中符合該查詢(xún)條件的文檔都刪去,如-> db.student.remove({"age":9})則會(huì)刪調(diào)年齡為9的所有文檔,如果加上{justOne:true}則只刪第一個(gè)匹配上的文檔。如-> db.student.remove({"age":9},{justOne:true})。使用-> db.student.remove({})可以刪除該集合當(dāng)中的所有文檔,達(dá)到清空該集合的目的,此時(shí)必須能傳入一個(gè)空對(duì)象才行。
我們使用命令->db.student.update()方法進(jìn)行文檔修改操作。第一個(gè)參數(shù)對(duì)象表示查詢(xún)條件,第二個(gè)參數(shù)對(duì)象為修改的條件。如鍵入命令->db.student.update({"name":"xiaohong"},{$set:{"age":18}})則把名字為小紅的文檔當(dāng)中的年齡改為18。當(dāng)?shù)谝粋€(gè)查詢(xún)條件匹配上多條文檔時(shí),默認(rèn)只對(duì)第一條文檔數(shù)據(jù)進(jìn)行修改,如果想要批量修改,則要加上{multi:true},即->db.student.update({"name":"xiaohong"},{$set:{"age":18}},{multi:true})。
如果沒(méi)有$set這個(gè)關(guān)鍵字,則代表替換文檔。如->db.student.update({"name":"xiaohong"},{"age":18}),則表示把名字為小紅這個(gè)文檔全部替換為{"age":18}。
使用命令-> db.student.stats().count或者-> db.student.find().count()均可顯示出當(dāng)前數(shù)據(jù)庫(kù)的student這個(gè)集合當(dāng)中文檔對(duì)象的總數(shù)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/19130.html
摘要:安裝全過(guò)程環(huán)境基本情況我是在電腦下安裝的系統(tǒng)位,這個(gè)也是導(dǎo)致我安裝的時(shí)候出現(xiàn)異常提示,原因可能是的版本是位的,我應(yīng)該再找一個(gè)位的,但事實(shí)上我找不到。 簡(jiǎn)述 之前講了一些關(guān)于MongoDB的知識(shí),出人意料的受歡迎,也讓我很吃驚,所以今天打算分享一些我在自己計(jì)算機(jī)的虛擬機(jī)的centos系統(tǒng)下安裝MongoDB的經(jīng)歷,希望感興趣的你們?cè)诎惭bMongoDB的時(shí)候出現(xiàn)問(wèn)題可以來(lái)看看我是怎么安裝的...
摘要:安裝全過(guò)程環(huán)境基本情況我是在電腦下安裝的系統(tǒng)位,這個(gè)也是導(dǎo)致我安裝的時(shí)候出現(xiàn)異常提示,原因可能是的版本是位的,我應(yīng)該再找一個(gè)位的,但事實(shí)上我找不到。 簡(jiǎn)述 之前講了一些關(guān)于MongoDB的知識(shí),出人意料的受歡迎,也讓我很吃驚,所以今天打算分享一些我在自己計(jì)算機(jī)的虛擬機(jī)的centos系統(tǒng)下安裝MongoDB的經(jīng)歷,希望感興趣的你們?cè)诎惭bMongoDB的時(shí)候出現(xiàn)問(wèn)題可以來(lái)看看我是怎么安裝的...
摘要:安裝全過(guò)程環(huán)境基本情況我是在電腦下安裝的系統(tǒng)位,這個(gè)也是導(dǎo)致我安裝的時(shí)候出現(xiàn)異常提示,原因可能是的版本是位的,我應(yīng)該再找一個(gè)位的,但事實(shí)上我找不到。 簡(jiǎn)述 之前講了一些關(guān)于MongoDB的知識(shí),出人意料的受歡迎,也讓我很吃驚,所以今天打算分享一些我在自己計(jì)算機(jī)的虛擬機(jī)的centos系統(tǒng)下安裝MongoDB的經(jīng)歷,希望感興趣的你們?cè)诎惭bMongoDB的時(shí)候出現(xiàn)問(wèn)題可以來(lái)看看我是怎么安裝的...
閱讀 2443·2021-11-18 10:07
閱讀 2391·2021-09-22 15:59
閱讀 3149·2021-08-23 09:42
閱讀 2361·2019-08-30 15:44
閱讀 1251·2019-08-29 15:06
閱讀 2420·2019-08-29 13:27
閱讀 1289·2019-08-29 13:21
閱讀 1510·2019-08-29 13:13