在上一篇文章中講解了如何安裝MongoDB,這篇文章中講解一些有關MongoDB的概念。正則表達式
無論咱們要學習什麼數據庫,都應該學習其中的基礎概念,在MongoDB中基本的概念是文檔、集合、數據庫,下面挨個介紹。數據庫
下面的表格將會幫助您更容易理解MongoDB中的一些概念:express
SQL術語/概念 | MongoDB術語/概念 | 解釋/說明 |
database | databaee | 數據庫 |
table | collection | 數據庫表/集合 |
row | document | 數據記錄行/文檔 |
column | field | 數據字段/域 |
index | index | 索引 |
table joins | 錶鏈接,MongoDB不支持 | |
primary key | primary key | 主鍵,MongoDB自動將_id字段設置爲主鍵 |
1、數據庫數組
一個MongoDB中能夠創建多個數據庫。服務器
MongoDB的默認數據庫爲「db」,該數據庫存儲在data目錄中。數據結構
MongoDB的單個實例能夠容納多個獨立的數據庫,每個都有本身的集合和權限,不一樣的數據庫也放置在不一樣的文件中。學習
一、使用「show dbs」命令能夠顯示全部數據庫的列表,以下圖所示:編碼
二、執行「db」命令能夠顯示當前數據庫對象或集合,以下圖所示:spa
三、執行「use」命令,能夠鏈接到一個指定的數據庫。3d
例如:從當前的test數據庫切換到local數據庫,以下圖所示:
admin:從權限的角度來看,這是「root」數據庫。要是將一個用戶添加到這個數據庫,這個用戶自動繼承全部數據庫的權限。一些特定的服務器端的命令也只能從這個數據庫運行,好比列出全部的數據庫或者關閉服務器。
local:這個數據永遠不會被複制,能夠用來存儲限於本地單臺服務器的任意集合。
config:當MongoDB用於分片設置時,config數據庫在內部使用,用於保存分片的相關信息。
2、文檔
文檔是一組鍵值(key-value)對(即BSON)。MongoDB的文檔不須要設置相同的字段,而且相同的字段不須要相同的數據類型。這與關係型數據庫有很大的區別,也是MongoDB很是突出的特色。
一個簡單的文檔例子以下:
{"site":"www.baidu.com","name":"百度"}
RDBMS與MongoDB對應的術語:
須要注意的是:
一、文檔中的鍵/值對是有序的。
二、文檔中的值不只能夠是在雙引號裏面的字符串,還能夠是其餘幾種數據類型(甚至能夠是整個嵌入的文檔)。
三、MongoDB區分類型和大小寫。
四、MongoDB的文檔不能有重複的鍵。
五、文檔的鍵是字符串。除了少數例外狀況,鍵可使用任意的UTF-8字符。
文檔鍵命名規範:
一、鍵不能含有\0(空字符)。這個字符用來表示鍵的結尾。
二、.和$有特別的意義,只有在特定環境下才能使用。
三、如下劃線「_」開頭的鍵是保留的(不是嚴格要求的)。
3、集合
集合就是MongoDB文檔組,相似於RDBMS(即關係數據庫管理系統)中的表格。
集合存在於數據庫中,集合沒有固定的結構,這意味着你在對集合能夠插入不一樣格式和類型的數據,但一般狀況下咱們插入集合的數據都會有必定的關聯性。
好比,咱們能夠將如下不一樣數據結構的文檔插入到集合中:
{「site」:「www.baiduc.com」}
{「site」:「www.baiduc.com」,"name":"百度"}
{「site」:「www.baiduc.com」,"name":"百度","address":"北京"}
合法的集合命名
一、集合名不能是空字符串「」。
二、集合名不能含有\0字符(空字符),這個字符表示集合名的結尾。
三、集合名不能以「system」開頭,這是爲系統集合保留的前綴。
四、用戶建立的集合名字不能含有保留字符。有些驅動程序的確支持在集合名裏面包含,這是由於某些系統生成的集合中包含該字符。除非你要訪問這種系統建立的集合,不然千萬不要在集合名字裏面出現$。
MongoDB數據類型
數據類型 |
描述 |
String |
字符串。存儲數據經常使用的數據類型。在 MongoDB 中,UTF-8 編碼的字符串纔是合法的。 |
Integer |
整型數值。用於存儲數值。根據你所採用的服務器,可分爲 32 位或 64 位。 |
Boolean |
布爾值。用於存儲布爾值(真/假)。 |
Double |
雙精度浮點值。用於存儲浮點值。 |
Min/Max keys |
將一個值與 BSON(二進制的 JSON)元素的最低值和最高值相對比。 |
Arrays |
用於將數組或列表或多個值存儲爲一個鍵。 |
Timestamp |
時間戳。記錄文檔修改或添加的具體時間。 |
Object |
用於內嵌文檔。 |
Null |
用於建立空值。 |
Symbol |
符號。該數據類型基本上等同於字符串類型,但不一樣的是,它通常用於採用特殊符號類型的語言。 |
Object ID |
對象 ID。用於建立文檔的 ID。建立文檔時默認自動建立 |
Binary Data |
二進制數據。用於存儲二進制數據。 |
Code |
代碼類型。用於在文檔中存儲 JavaScript 代碼。 |
Regular expression |
正則表達式類型。用於存儲正則表達式。 |
Date |
日期時間。用 UNIX 時間格式來存儲當前日期或時間。你能夠指定本身的日期時間:建立 Date 對象,傳入年月日信息。 |