MongoDB是一個基于分布式檔案存儲的資料庫,屬于文檔型的,雖然也是NoSQL資料庫的一種,但是與redis、memcached等資料庫有些差別。MongoDB由C++語言編寫。旨在為WEB應用提供可擴充的高性能資料存儲解決方案。
MongoDB是一個介于關系資料庫和非關系資料庫之間的産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。他支援的資料結構非常松散,是類似json的bson格式,是以可以存儲比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
2007年10月,MongoDB由10gen團隊所發展。2009年2月首度推出。
MongoDB 可以将資料存儲為一個文檔,資料結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔、數組及文檔數組。
MongoDB官網位址,目前最新版是3.6:
<a href="https://www.mongodb.com/">https://www.mongodb.com/</a>
關于JSON的描述可以參考以下文章:
<a href="http://www.w3school.com.cn/json/index.asp">http://www.w3school.com.cn/json/index.asp</a>
特點:
面向集合存儲,易存儲對象類型的資料
模式自由
支援動态查詢
支援完全索引,包含内部對象
支援查詢
支援複制和故障恢複
使用高效的二進制資料存儲,包括大型對象(如視訊等)
自動處理碎片,以支援雲計算層次的擴充性
支援RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言
檔案存儲格式為BSON(一種JSON的擴充)
可通過網絡通路
不管我們學習什麼資料庫都應該學習其中的基礎概念,在mongodb中基本的概念是文檔、集合、資料庫,下圖是MongoDB和關系型資料庫的術語以及概念的對比:

以下使用兩張圖對比一下關系型資料庫和MongoDB資料庫的資料存儲結構:
關系型資料庫資料結構:
MongoDB資料結構:
首先上官方的安裝文檔:
<a href="https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/">https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/</a>
mongodb可以通過yum安裝,首先需要建立官方提供的yum源:
1.進入/etc/yum.repos.d/目錄下:
cd /etc/yum.repos.d/
2.編輯配置檔案加入以下内容:
3.編輯完成之後檢視是否有mongodb相關的rpm包:
如上,可以看到yum源中已經有mongodb3.6的rpm包。
4.然後就是直接yum安裝了:
yum install -y mongodb-org
5.在指令行上輸入mongo,然後按兩下tap鍵,出現以下指令代表安裝成功:
1.先看一下mongodb的配置檔案:
2.啟動 mongod 服務:
提示:如果mongodb監聽端口并不是預設的27017,則在連接配接的時候需要加--port 選項,例如:
mongo --port 27018
3.在本機可以直接運作指令mongo進入到mongodb shell中:
可以看到,報了一個錯誤資訊沒有找到/root/.dbshell,這個沒關系,等你裡面輸入了指令後就會自動生成,這個檔案是用來記錄指令曆史的。其他的警告資訊不用管,不影響使用。
連接配接遠端的mongodb,需要加--host來指定目标IP,例如:
[root@localhost ~]# mongo --host 192.168.77.130 --port 27017
如果遠端的mongodb設定了驗證,則在連接配接的時候需要帶使用者名和密碼:
mongo -uusername -ppasswd --authenticationDatabase db
1.進入到MongoDB裡,切換到admin庫,因為得到admin庫裡才能進行使用者相關的操作:
2.建立使用者:
以上我們建立了一個admin使用者,user指定使用者,customData為說明字段,可以省略,pwd為密碼,roles指定使用者的角色,role相當于指定權限,db指定庫名,建立使用者時必須針對一個庫。
3.列出所有的使用者:
4.檢視目前庫下所有的使用者
5.删除使用者:
6.以上我們建立了一個admin使用者,但是若要使用者生效,還需要編輯啟動腳本vim /usr/lib/systemd/system/mongod.service,在OPTIONS=後面增--auth:
重新開機服務:
7.使用admin使用者登入MongoDB:
8.再來建立一個使用者:
以上建立的test1使用者對db1庫有讀寫權限,對db2庫有隻讀權限。之是以先use db1,表示使用者在 db1 庫中建立,就一定要db1庫驗證身份,即使用者的資訊跟随資料庫。比如上述 test1雖然有 db2 庫的讀取權限,但是一定要先在db1庫進行身份驗證,直接通路會提示驗證失敗。
在db1中驗證身份:
<b>本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/2057717,如需轉載請自行聯系原作者</b>