Mongodb數據庫的基本操做

mongodb是文檔型數據庫,其官網地址爲 https://www.mongodb.com/。咱們在官網上下載該軟件包,並完成安裝。如咱們能夠設置安裝路徑爲D:\MongoDB\mongodb。咱們在完成安裝以後,能夠看到在該目錄的bin文件夾下有以下文件:mysql

圖片描述

接下去咱們配置環境變量,爲了能在任意目錄下都能運行bin這個文件夾下的應用程序。咱們在環境變量的用戶變量當中新建一個名爲Mongodb的變量,其變量值爲D:\MongoDB\mongodb\bin。接下去編輯用戶變量當中的PATH變量值,在其值後面加上;%Mongodb%;。最後肯定關閉完成了環境變量的配置。接下去在cmd當中,鍵入命令-> mongo,顯示以下結果,則說明安裝和配置成功。sql

圖片描述

這裏咱們能夠看到能夠正確顯示咱們安裝的mongodb的版本號,在此顯示鏈接失敗是由於咱們還沒進行數據庫開機的操做。mongodb

1、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.0test.ns這兩個文件。每一條文檔數據都爲一個json數據,插入文檔時應該讓其符合嚴格的json語法。數據庫當中每一條文檔數據都會被分配一個惟一的_id屬性值。

2、MongoVUE的使用

MongoVUEMongodb的一款可視化管理工具。咱們在完成安裝以後,手動啓動MongoVUE.exe進入其管理界面。在第一次使用時,在彈出框Connect to Mongo Database當中選擇新建,填寫以下信息:

圖片描述

咱們在server當中填寫127.0.0.1,表示鏈接本地數據庫,當輸入指定的IP地址還可用於鏈接遠程的數據庫。而port端口號爲默認的27017便可。保存後選擇鏈接便可。

咱們必定要在完成數據庫的開機操做以後,纔可使用MongoVUE對該數據庫進行鏈接,不然會顯示鏈接失敗。

在完成鏈接以後咱們能夠看到:

圖片描述

在該面板的左側邊欄能夠看到咱們當前全部的數據庫,其中adminlocal爲系統默認數據庫,咱們不對其作任何處理。其中test是咱們新建的數據庫,在其內部的Collections的分支下能夠看到該數據庫下全部的集合,選中student這個集合(不用對其再展開)右鍵選擇View則能夠在右側面板看到有三種視圖可供選擇,能夠顯示這個集合當中全部的文檔及數據。

咱們通常在cmd當中進行數據庫的增刪改查的操做,在可視化面板當中查看數據庫當中數據的存儲狀況,即在命令行當中進行控制操做,在可視化工具當中進行驗證。因爲可視化工具不能自動刷新,咱們在完成操做以後,須要點擊面板左側的Refresh刷新,而後再選中某個集合右鍵View才能夠查看最新的文檔數據。

3、Mongodb數據庫的增刪改查操做

一、導入數據

咱們以前操做過往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({})能夠刪除該集合當中的全部文檔,達到清空該集合的目的,此時必須能傳入一個空對象才行。

四、修改(update)操做

咱們使用命令->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這個集合當中文檔對象的總數。

圖片描述

相關文章
相關標籤/搜索