摘要:我們后續(xù)的數(shù)據(jù)庫操作需要再開一個(gè)。接下去我們就進(jìn)入了的語法環(huán)境下,可以輸入命令進(jìn)行數(shù)據(jù)庫的操作。在上述命令當(dāng)中,如果數(shù)據(jù)庫與集合名均為不存在的,則一并完成了新建的操作。
mongodb是文檔型數(shù)據(jù)庫,其官網(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)境變量的用戶變量當(dāng)中新建一個(gè)名為Mongodb的變量,其變量值為D:MongoDBmongodbin。接下去編輯用戶變量當(dāng)中的PATH變量值,在其值后面加上;%Mongodb%;。最后確定關(guān)閉完成了環(huán)境變量的配置。接下去在cmd當(dāng)中,鍵入命令-> mongo,顯示如下結(jié)果,則說明安裝和配置成功。
一、Mongodb數(shù)據(jù)庫的開機(jī)與連接這里我們可以看到可以正確顯示我們安裝的mongodb的版本號(hào),在此顯示連接失敗是因?yàn)槲覀冞€沒進(jìn)行數(shù)據(jù)庫開機(jī)的操作。
由于mongodb為文檔型的數(shù)據(jù)庫,它不同于mysql等數(shù)據(jù)庫,它的數(shù)據(jù)庫真實(shí)可見,與我們本機(jī)上的物理文件一一對(duì)應(yīng)。故我們需要先建立一個(gè)文件夾,作為數(shù)據(jù)庫真實(shí)存放的位置。比如我們?cè)?b>D盤根目錄下新建一個(gè)名為mongo的文件夾,則該數(shù)據(jù)庫文檔所在文件夾的絕對(duì)物理路徑為D:mongo。
接下去我們打開cmd,輸入開機(jī)命令-> mongod --dbpath D:mongo。此時(shí)可以看到控制臺(tái)在最后一行輸出waiting for connections on port 27017,則說明此時(shí)數(shù)據(jù)庫完成了開機(jī)操作。
此時(shí)在我們新建的mongo文件夾下多了如下所示的默認(rèn)文件:
在開機(jī)命令當(dāng)中--dbpath用于選擇數(shù)據(jù)庫文檔所在的文件夾,是數(shù)據(jù)庫真實(shí)存放的位置。在該文件夾下,所有以.ns為后綴名的文件都為數(shù)據(jù)庫,即mongodb中數(shù)據(jù)庫真實(shí)可見,有物理文件與數(shù)據(jù)庫一一對(duì)應(yīng)。
在完成數(shù)據(jù)庫的開機(jī)操作之后,我們一定要讓這個(gè)cmd面板保持上圖所示的狀態(tài),不能關(guān)閉,不能退出程序。一旦該cmd出現(xiàn)問題,我們的數(shù)據(jù)庫就自動(dòng)關(guān)閉了。我們后續(xù)的數(shù)據(jù)庫操作需要再開一個(gè)cmd。
接下去我們?cè)匍_一個(gè)cmd,輸入命令-> mongo 用于連接數(shù)據(jù)庫。當(dāng)顯示如下所示,則說明數(shù)據(jù)庫連接成功。
接下去我們就進(jìn)入了mongodb的語法環(huán)境下,可以輸入命令進(jìn)行數(shù)據(jù)庫的操作。
我們用命令-> show dbs來顯示當(dāng)前所有的數(shù)據(jù)庫。(現(xiàn)在只有一些系統(tǒng)默認(rèn)的數(shù)據(jù)庫文件,這些系統(tǒng)自帶的文件,我們不做任何操作)
我們用命令-> use test來表示使用某個(gè)數(shù)據(jù)庫,當(dāng)use一個(gè)不存在的數(shù)據(jù)庫則表示新建。之后再用命令-> db來查看當(dāng)前所在的數(shù)據(jù)庫。我們?cè)谕瓿?b>test數(shù)據(jù)庫的新建之后,用-> show dbs查看現(xiàn)在所有的數(shù)據(jù)庫,仍然看不到我們新建的那個(gè)數(shù)據(jù)庫,說明我們想把這個(gè)數(shù)據(jù)庫新建成功,則必須往里面插入一條數(shù)據(jù)。
mongodb的某個(gè)數(shù)據(jù)庫由很多個(gè)集合(collection)組成,集合類似于mysql數(shù)據(jù)庫當(dāng)中數(shù)據(jù)表的概念,而每一個(gè)集合又由很多個(gè)文檔(document)構(gòu)成。每一個(gè)文檔都是一個(gè)json對(duì)象,文檔類似于mysql數(shù)據(jù)表當(dāng)中字段的概念。數(shù)據(jù)庫當(dāng)中不能直接插入數(shù)據(jù),只能往該數(shù)據(jù)庫的某個(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來確定當(dāng)前所在的數(shù)據(jù)庫為test,接下去用命令-> db.student.insert()往該集合當(dāng)中插入一個(gè)json對(duì)象。這句操作完成了在test數(shù)據(jù)庫中student這個(gè)集合的創(chuàng)建與一條文檔數(shù)據(jù)的插入。接下去可用命令-> show collections來列出當(dāng)前這個(gè)數(shù)據(jù)庫當(dāng)中所有的集合(其中system.indexes為系統(tǒng)默認(rèn)的集合,不做任何處理)。用命令-> db.student.find()來列出當(dāng)前這個(gè)數(shù)據(jù)庫中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語法。數(shù)據(jù)庫當(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)中選擇新建,填寫如下信息:
我們?cè)?b>server當(dāng)中填寫127.0.0.1,表示連接本地?cái)?shù)據(jù)庫,當(dāng)輸入指定的IP地址還可用于連接遠(yuǎn)程的數(shù)據(jù)庫。而port端口號(hào)為默認(rèn)的27017即可。保存后選擇連接即可。
我們一定要在完成數(shù)據(jù)庫的開機(jī)操作之后,才可以使用MongoVUE對(duì)該數(shù)據(jù)庫進(jìn)行連接,否則會(huì)顯示連接失敗。
在完成連接之后我們可以看到:
在該面板的左側(cè)邊欄可以看到我們當(dāng)前所有的數(shù)據(jù)庫,其中admin與local為系統(tǒng)默認(rèn)數(shù)據(jù)庫,我們不對(duì)其做任何處理。其中test是我們新建的數(shù)據(jù)庫,在其內(nèi)部的Collections的分支下可以看到該數(shù)據(jù)庫下所有的集合,選中student這個(gè)集合(不用對(duì)其再展開)右鍵選擇View則可以在右側(cè)面板看到有三種視圖可供選擇,可以顯示這個(gè)集合當(dāng)中所有的文檔及數(shù)據(jù)。
三、Mongodb數(shù)據(jù)庫的增刪改查操作我們一般在cmd當(dāng)中進(jìn)行數(shù)據(jù)庫的增刪改查的操作,在可視化面板當(dāng)中查看數(shù)據(jù)庫當(dāng)中數(shù)據(jù)的存儲(chǔ)情況,即在命令行當(dāng)中進(jìn)行控制操作,在可視化工具當(dāng)中進(jìn)行驗(yàn)證。由于可視化工具不能自動(dòng)刷新,我們?cè)谕瓿刹僮髦螅枰c(diǎn)擊面板左側(cè)的Refresh刷新,然后再選中某個(gè)集合右鍵View才可以查看最新的文檔數(shù)據(jù)。
我們之前操作過往test數(shù)據(jù)庫的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ù)庫的某個(gè)集合當(dāng)中。
在進(jìn)行導(dǎo)入操作時(shí),要再開一個(gè)cmd,然后用命令-> mongoimport --db 數(shù)據(jù)庫名 --collection 集合名 --drop --file json文件的絕對(duì)物理路徑來進(jìn)行導(dǎo)入操作。
在上述命令當(dāng)中,如果數(shù)據(jù)庫與集合名均為不存在的,則一并完成了新建的操作。我們?cè)谕獠烤庉嬈鳟?dāng)中完成json文件的編輯,后綴名為.json的文件必須能嚴(yán)格遵守json格式,key值必須能加雙引號(hào),value值若為字符串類型,也必須加雙引號(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ù)庫的那個(gè)cmd當(dāng)中,用命令-> db來查看當(dāng)前的使用的數(shù)據(jù)庫為test,接下去用命令-> db.student.find()來對(duì)當(dāng)前這個(gè)數(shù)據(jù)庫的student集合進(jìn)行查詢操作。若find方法當(dāng)中沒有參數(shù)則列出該集合當(dāng)中所有的文檔對(duì)象。
可以在find方法當(dāng)中傳入一個(gè)json對(duì)象(這里同樣需要遵循嚴(yán)格的json語法)表示查詢條件。如果有多個(gè)條件則在該對(duì)象當(dāng)中,用逗號(hào)相隔的鍵值對(duì)表示查詢條件之間且的關(guān)系。若找到了則輸出對(duì)應(yīng)的文檔,若沒找到則不輸出結(jié)果,也不會(huì)報(bào)錯(cuò)。
我們給查詢對(duì)象的某個(gè)屬性值加上{$gt:}表示大于符號(hào),{$lt:}表示小于符號(hào)。如鍵入命令-> db.student.find({"score.Math":{$gt:74}})表示查詢出數(shù)學(xué)成績(jī)大于74分的文檔對(duì)象。
我們?cè)诓樵儗?duì)象當(dāng)中加上$or:[]表示在該數(shù)組當(dāng)中的每一個(gè)查詢條件之間為或的關(guān)系,每一個(gè)查詢條件用一個(gè)json對(duì)象來表示。如鍵入命令-> db.student.find({$or:[{"age":9},{"score.Math":70}]})表示查詢出年齡為9歲或數(shù)學(xué)成績(jī)?yōu)?b>70分的文檔對(duì)象。
我們可以在調(diào)用find方法查詢之后,調(diào)用sort()方法對(duì)查詢結(jié)果進(jìn)行排序操作。屬性值為1代表為升序排列,屬性值為-1則代表為降序排列。如鍵入命令-> db.student.find().sort({"score.Math":1,"age":-1})表示查詢出該集合當(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ù)庫。鍵入命令-> db.student.drop()即可刪除當(dāng)前這個(gè)數(shù)據(jù)庫當(dāng)中student這個(gè)集合。使用命令-> db.student.remove()當(dāng)中傳入一個(gè)查詢對(duì)象則可以把該集合當(dāng)中符合該查詢條件的文檔都刪去,如-> 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ì)象表示查詢條件,第二個(gè)參數(shù)對(duì)象為修改的條件。如鍵入命令->db.student.update({"name":"xiaohong"},{$set:{"age":18}})則把名字為小紅的文檔當(dāng)中的年齡改為18。當(dāng)?shù)谝粋€(gè)查詢條件匹配上多條文檔時(shí),默認(rèn)只對(duì)第一條文檔數(shù)據(jù)進(jìn)行修改,如果想要批量修改,則要加上{multi:true},即->db.student.update({"name":"xiaohong"},{$set:{"age":18}},{multi:true})。
如果沒有$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ù)庫的student這個(gè)集合當(dāng)中文檔對(duì)象的總數(shù)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/19130.html
摘要:安裝全過程環(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)問題可以來看看我是怎么安裝的...
摘要:安裝全過程環(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)問題可以來看看我是怎么安裝的...
摘要:安裝全過程環(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)問題可以來看看我是怎么安裝的...
閱讀 2368·2021-11-18 10:07
閱讀 2318·2021-09-22 15:59
閱讀 3077·2021-08-23 09:42
閱讀 2276·2019-08-30 15:44
閱讀 1191·2019-08-29 15:06
閱讀 2303·2019-08-29 13:27
閱讀 1210·2019-08-29 13:21
閱讀 1412·2019-08-29 13:13