我叫MongoDb,不懂個人看完個人故事您就入門啦!

image
這是mongo基礎篇,後續會連續更新4篇mongodb

你們好我叫MongoDb,自從07年10月10gen團隊把我帶到這個世界來,我已經13歲多啦,如今愈來愈多的小夥伴在擁抱我,我很高興。我是NoSQL你們族的一員,我是C++的親兒子啦。爲了你們更好的熟悉我,今天我先簡單從簡單的使用角度來介紹我本身。數據庫

首先仍是先介紹一下咱們的你們族NoSQL吧json

NoSQL只是他簡稱,他的中文名叫 非關係型數據庫,外文名叫Not Only SQL。他是對關係型數據庫的一個補充(RDBMS)。RDBMS追求數據存儲和查詢的高度結構化、嚴格的數據一致性;NOSQL不在意形式,重點關心效率,NOSQL是高性能、無模式、高可擴展的分佈式數據庫,NOSQL存儲包括四種類型:鍵值對存儲、列存儲、文檔存儲、圖形數據存儲。NoSQL就簡單介紹到這,這不是今天的重點,下面仍是重點介紹一下我本身(MongoDb),呵呵!數據結構

MongoDb自我介紹app

MongoDb是一個面向文檔存儲的鍵值對NOSQL數據庫,是一個最接近關係型數據庫的非關係數據庫。在數據存儲結構和查詢上使用BJOSN(相似於JSON)結構,BJOSN支持多層機構,在具體的使用過程當中,更像是操做Javascript腳本。正由於MongoDb的無模式化,在實際應用中變得更加靈活,易於擴展。與RDBMS同樣,支持主鍵、索引、檢索等操做,因爲非結構化因此不支持join查詢。分佈式

MongoDb的基本概念性能

具體的數據庫安裝就不在介紹了,網上一搜一大推。MongoDb採用BJON化的文檔存儲,因此其基本結構概念能夠結合JSON聯想一下:字段、文檔、集合、數據庫,這和RDBMS的屬性、列、表、數據庫是一一對應關係。下面以一個表格來對比說明一下:spa

image.png

簡單的一個表格顯示還不夠直觀,那咱們在來一張形象的圖片來講明一下吧!3d

image.png
image.png

用戶權限管理unix

在生成環境數據庫管理中,數據庫權限是一個很重要的功能。在具體的權限上,須要針對全局的權限控制,須要精確到具體的數據的權限,在具體的權限分類上包括:讀、讀寫、管理員等權限。下面列表介紹mongodb的內置權限:

image.png

經過上面的表,咱們能夠得出:根據權限的做用範圍上來看,權限分爲了兩大類權限:針對每一庫的權限、針對所有數據庫的權限。根據不一樣的權限分類,在賦值格式上也有必定差別,在具體的用戶權限分配上,一個用戶能夠同時分配多個權限。

新增用戶時權限初始化格式爲:

針對所有數據庫權限初始化命令格式:

db.createUser({user:"用戶名",pwd:"密碼",roles:["權限值"]})

針對指定數據庫權限初始化命令格式:

db.createUser({user:"用戶名",pwd:"密碼",roles:[ {role:"權限值",db:"對應的數據庫"},{role:"權限值",db:"對應的數據庫"}….]})

這樣說可能不怎麼好理解,那麼咱們仍是以實際工做的使用狀況來舉例說明。

條件假設:有3個數據庫:testdb00一、testdb002

須要給如用戶分配對應的權限

image.png

經過實際舉例,應該對權限的新增初始化操做命令有了理解,那麼下面咱們就來對權限的根據新操做命令簡單聊聊,其實根系和初始化具體的權限格式是一至的,具體以下:

針對所有數據庫權限更新命令格式:

db.updateUser("被更新用戶名",{pwd:"更新後的密碼",roles:["權限值"]})

針對指定數據庫權限更新命令格式:

db.updateUser("被更新用戶名",{pwd:"更新後的密碼",roles:[{role:"權限值",db:"對應的數據庫"},{role:"權限值",db:"對應的數據庫"}….]})

注意:updateUser的第二個參數有兩個節點:pwd和roles。若是不須要更新某一節點的數據,那麼直接不要該節點便可。

實例:繼續上面的實例繼續操做

image.png

數據庫(database)

具體的數據庫概念和RDBMS一致,一個mongodb能夠建立多個數據庫,不一樣數據庫也能夠存儲在不一樣的mongodb。系統的默認數據庫包括:admin(存儲用戶權限相關)、config(配置信息)、local(日誌信息)。針對數據庫咱們經常使用的操做包括:建立、刪除。具體的實現以下:

建立:use 數據庫名稱

當數據庫名稱不存在時,系統自動建立(建立後不能顯示,須要向裏面插入數據纔會顯示),存在則切換。

刪除:首先要切換到對於的數據庫,而後在執行dropDatabase命令

use 被刪除的數據庫名稱

db.dropDatabase()

集合(Collection)

集合是mongodb中對數據存儲的一個分組,和關係數據庫中的表是對應關係。集合中存儲的文檔數據的無固定格式,能夠自由存儲不一樣格式的bjson數據,可是在實際使用中,咱們仍是存儲同一類型的bjson數據。集合的常見的操做命令以下:

建立集合:

db.createCollection(集合名稱,集合規則),其中第二次參數爲一個json數據,非必填,具體的參數節點爲:

集合規則:{ capped :選填bool類型:設置改集合是否爲一個固定集合,

true:表明固定集合,集合中的數據不可修改,與size配對使用,表明當集合達到指定大小後,會自動覆蓋歷史數據(最早添加的數據),

size:選填數字類型:指定集合的最大存儲數據(字節數),當集合達到指定大小後,會自動覆蓋歷史數據(最早添加的數據) }

max: 選填數字類型:指定集合的最大存儲的文檔總個數,當文檔個數大於max值時,會自動替換歷史文檔

}

collection刪除:

db.集合名稱.drop();

文檔(Document)

文檔就一組鍵值(key-value)對數據(一個BJON),具體的一個文檔結構能夠多層嵌套,不一樣文檔間的數據結構能夠不同,而且相同節點的數據類型也可不同,這是與RDBMS最大的區別所在,這也奠基了MongoDB的高可擴展性。其實簡單的說就是一個一個的jon格式的數據。

文檔常見的幾個操做命令彙總:

image.png

字段

字段就很好理解了,就是文檔中的json數據的每個節點。

image.png

經過對mongodb的操做簡單介紹,其實咱們不難發現如下一些特性:

1.不管是對文檔的增、刪、改、查操做的參數一切皆json,在實際操做的時候,按照json方式來操做便可。

2.數據庫和集合均可以在使用是自動建立:

2.1 use 切換數據庫時,若是沒有數據庫自動建立;

2.2 db.集合.insert() 當集合不存在時,系統自動建立集合。

Mongodb的這一些特性用起來是否是很爽的感受。下面從數據庫的建立,到文檔的總體操做流程寫一些演示實例,來加深印象。

image.png

經過上面的實際操做,咱們發現全部新增文檔都會自動生成一個節點」_id」( ObjectId),該_id是mongodb系統自動生成的相似惟一主鍵,能夠很快的去生成和排序,包含 12 bytes,含義是:

1.前 4 個字節表示建立 unix 時間戳,格林尼治時間 UTC 時間,比北京時間晚了 8 個小時

2.接下來的 3 個字節是機器標識碼

3.緊接的兩個字節由進程 id 組成 PID

4.最後三個字節是隨機數

image.png

固然_id也能夠根據實際須要自定義賦值。

好了今天就先寫到這,經過本篇文章對mongo有了一個初步的認識瞭解,下一篇文章,咱們在一塊兒詳聊查詢,mongo的查詢仍是有不少聊的。謝謝您的查看。END

相關文章
相關標籤/搜索