mongodb
是文檔型數據庫,其官網地址爲 https://www.mongodb.com/。咱們在官網上下載該軟件包,並完成安裝。如咱們能夠設置安裝路徑爲D:\MongoDB\mongodb
。咱們在完成安裝以後,能夠看到在該目錄的bin
文件夾下有以下文件:mysql
接下去咱們配置環境變量,爲了能在任意目錄下都能運行bin
這個文件夾下的應用程序。咱們在環境變量的用戶變量當中新建一個名爲Mongodb
的變量,其變量值爲D:\MongoDB\mongodb\bin
。接下去編輯用戶變量當中的PATH
變量值,在其值後面加上;%Mongodb%;
。最後肯定關閉完成了環境變量的配置。接下去在cmd
當中,鍵入命令-> mongo
,顯示以下結果,則說明安裝和配置成功。sql
這裏咱們能夠看到能夠正確顯示咱們安裝的
mongodb
的版本號,在此顯示鏈接失敗是由於咱們還沒進行數據庫開機的操做。mongodb
因爲mongodb
爲文檔型的數據庫,它不一樣於mysql
等數據庫,它的數據庫真實可見,與咱們本機上的物理文件一一對應。故咱們須要先創建一個文件夾,做爲數據庫真實存放的位置。好比咱們在D
盤根目錄下新建一個名爲mongo
的文件夾,則該數據庫文檔所在文件夾的絕對物理路徑爲D:\mongo
。
接下去咱們打開cmd
,輸入開機命令-> mongod --dbpath D:\mongo
。此時能夠看到控制檯在最後一行輸出waiting for connections on port 27017
,則說明此時數據庫完成了開機操做。數據庫
此時在咱們新建的mongo
文件夾下多了以下所示的默認文件:json
在開機命令當中
--dbpath
用於選擇數據庫文檔所在的文件夾,是數據庫真實存放的位置。在該文件夾下,全部以.ns
爲後綴名的文件都爲數據庫,即mongodb
中數據庫真實可見,有物理文件與數據庫一一對應。數組
在完成數據庫的開機操做以後,咱們必定要讓這個cmd
面板保持上圖所示的狀態,不能關閉,不能退出程序。一旦該cmd
出現問題,咱們的數據庫就自動關閉了。咱們後續的數據庫操做須要再開一個cmd
。
接下去咱們再開一個cmd
,輸入命令-> mongo
用於鏈接數據庫。當顯示以下所示,則說明數據庫鏈接成功。編輯器
接下去咱們就進入了mongodb
的語法環境下,能夠輸入命令進行數據庫的操做。
咱們用命令-> show dbs
來顯示當前全部的數據庫。(如今只有一些系統默認的數據庫文件,這些系統自帶的文件,咱們不作任何操做)工具
咱們用命令-> use test
來表示使用某個數據庫,當use
一個不存在的數據庫則表示新建。以後再用命令-> db
來查看當前所在的數據庫。咱們在完成test
數據庫的新建以後,用-> show dbs
查看如今全部的數據庫,仍然看不到咱們新建的那個數據庫,說明咱們想把這個數據庫新建成功,則必須往裏面插入一條數據。spa
mongodb
的某個數據庫由不少個集合(collection
)組成,集合相似於mysql
數據庫當中數據表的概念,而每個集合又由不少個文檔(document
)構成。每個文檔都是一個json
對象,文檔相似於mysql
數據表當中字段的概念。數據庫當中不能直接插入數據,只能往該數據庫的某個指定集合當中插入數據,集合不須要新建,一旦咱們往某個集合當中插入數據,就至關於新建了這個集合,而且該集合當中也有了對應的數據。命令行
咱們在cmd
當中用命令-> db
來肯定當前所在的數據庫爲test
,接下去用命令-> db.student.insert()
往該集合當中插入一個json
對象。這句操做完成了在test
數據庫中student
這個集合的建立與一條文檔數據的插入。接下去可用命令-> show collections
來列出當前這個數據庫當中全部的集合(其中system.indexes
爲系統默認的集合,不作任何處理)。用命令-> db.student.find()
來列出當前這個數據庫中student
這個集合當中全部的文檔數據。以下圖所示:
此時能夠看到
mongo
這個文件夾下多了test.0
與test.ns
這兩個文件。每一條文檔數據都爲一個json
數據,插入文檔時應該讓其符合嚴格的json
語法。數據庫當中每一條文檔數據都會被分配一個惟一的_id
屬性值。
MongoVUE
是Mongodb
的一款可視化管理工具。咱們在完成安裝以後,手動啓動MongoVUE.exe
進入其管理界面。在第一次使用時,在彈出框Connect to Mongo Database
當中選擇新建,填寫以下信息:
咱們在server
當中填寫127.0.0.1
,表示鏈接本地數據庫,當輸入指定的IP
地址還可用於鏈接遠程的數據庫。而port
端口號爲默認的27017
便可。保存後選擇鏈接便可。
咱們必定要在完成數據庫的開機操做以後,纔可使用
MongoVUE
對該數據庫進行鏈接,不然會顯示鏈接失敗。
在完成鏈接以後咱們能夠看到:
在該面板的左側邊欄能夠看到咱們當前全部的數據庫,其中admin
與local
爲系統默認數據庫,咱們不對其作任何處理。其中test
是咱們新建的數據庫,在其內部的Collections
的分支下能夠看到該數據庫下全部的集合,選中student
這個集合(不用對其再展開)右鍵選擇View
則能夠在右側面板看到有三種視圖可供選擇,能夠顯示這個集合當中全部的文檔及數據。
咱們通常在
cmd
當中進行數據庫的增刪改查的操做,在可視化面板當中查看數據庫當中數據的存儲狀況,即在命令行當中進行控制操做,在可視化工具當中進行驗證。因爲可視化工具不能自動刷新,咱們在完成操做以後,須要點擊面板左側的Refresh
刷新,而後再選中某個集合右鍵View
才能夠查看最新的文檔數據。
咱們以前操做過往test
數據庫的student
集合當中插入一條文檔數據,可是用這種方式在控制檯當中完成數據導入效率過低。咱們通常把一個集合當中的文檔數據用json
文件的形式在外部編輯器當中編輯完成以後,統一所有導入數據庫的某個集合當中。
在進行導入操做時,要再開一個cmd
,而後用命令-> mongoimport --db 數據庫名 --collection 集合名 --drop --file json文件的絕對物理路徑
來進行導入操做。
在上述命令當中,若是數據庫與集合名均爲不存在的,則一併完成了新建的操做。咱們在外部編輯器當中完成
json
文件的編輯,後綴名爲.json
的文件必須能嚴格遵照json
格式,key
值必須能加雙引號,value
值若爲字符串類型,也必須加雙引號。直接把該文件拖進cmd
當中,則自動顯示該json
文件的絕對物理地址。--drop
表示爲在往該集合當中導入數據以前先清空這個集合。
在完成數據的導入以後,咱們回到以前鏈接數據庫的那個cmd
當中,用命令-> db
來查看當前的使用的數據庫爲test
,接下去用命令-> db.student.find()
來對當前這個數據庫的student
集合進行查詢操做。若find
方法當中沒有參數則列出該集合當中全部的文檔對象。
能夠在find
方法當中傳入一個json
對象(這裏一樣須要遵循嚴格的json
語法)表示查詢條件。若是有多個條件則在該對象當中,用逗號相隔的鍵值對錶示查詢條件之間且的關係。若找到了則輸出對應的文檔,若沒找到則不輸出結果,也不會報錯。
咱們給查詢對象的某個屬性值加上{$gt:}
表示大於符號,{$lt:}
表示小於符號。如鍵入命令-> db.student.find({"score.Math":{$gt:74}})
表示查詢出數學成績大於74
分的文檔對象。
咱們在查詢對象當中加上$or:[]
表示在該數組當中的每個查詢條件之間爲或的關係,每個查詢條件用一個json
對象來表示。如鍵入命令-> db.student.find({$or:[{"age":9},{"score.Math":70}]})
表示查詢出年齡爲9
歲或數學成績爲70
分的文檔對象。
咱們能夠在調用find
方法查詢以後,調用sort()
方法對查詢結果進行排序操做。屬性值爲1
表明爲升序排列,屬性值爲-1
則表明爲降序排列。如鍵入命令-> db.student.find().sort({"score.Math":1,"age":-1})
表示查詢出該集合當中全部的文檔數據,先根據數學成績升序排列,若是數學成績一致,則根據年齡進行逆序排列。(當有多個排序條件時,則按順序肯定排序條件的優先級)
鍵入命令-> db.dropDatabase()
便可刪除當前這個數據庫。鍵入命令-> db.student.drop()
便可刪除當前這個數據庫當中student
這個集合。使用命令-> db.student.remove()
當中傳入一個查詢對象則能夠把該集合當中符合該查詢條件的文檔都刪去,如-> db.student.remove({"age":9})
則會刪調年齡爲9
的全部文檔,若是加上{justOne:true}
則只刪第一個匹配上的文檔。如-> db.student.remove({"age":9},{justOne:true})
。使用-> db.student.remove({})
能夠刪除該集合當中的全部文檔,達到清空該集合的目的,此時必須能傳入一個空對象才行。
咱們使用命令->db.student.update()
方法進行文檔修改操做。第一個參數對象表示查詢條件,第二個參數對象爲修改的條件。如鍵入命令->db.student.update({"name":"xiaohong"},{$set:{"age":18}})
則把名字爲小紅的文檔當中的年齡改成18
。當第一個查詢條件匹配上多條文檔時,默認只對第一條文檔數據進行修改,若是想要批量修改,則要加上{multi:true}
,即->db.student.update({"name":"xiaohong"},{$set:{"age":18}},{multi:true})
。
若是沒有$set
這個關鍵字,則表明替換文檔。如->db.student.update({"name":"xiaohong"},{"age":18})
,則表示把名字爲小紅這個文檔所有替換爲{"age":18}
。
使用命令-> db.student.stats().count
或者-> db.student.find().count()
都可顯示出當前數據庫的student
這個集合當中文檔對象的總數。