標籤:
What?
最受歡迎的非關係型資料庫之一。面向文檔的資料庫,在儲存乎資料方面與關係型資料庫有著本質的區別。
Why?
簡單易用
對多變的業務需求,適應性強於SQL型DB
效能
複製
索引
分區
豐富的查詢
靈活的資料模型
毫不遜色的速度
海量資料下表現好
對程式員友好,但是是DBA的噩夢,維護性不佳
構成
相對於SQL資料庫 行-> 表 -> 資料庫 而言,mongoDB的組織圖是: document -> collection -> DataBase
其中的document , collection ,近似對應了SQL型資料庫中 行 ,表 的概念。
Document
文檔對 多個 key:value 的順序敏感:例如:
{ ‘name‘ : ‘tom‘ , ‘age‘: 21 , ‘email‘: ‘[email protected]‘
{ ‘name‘ : ‘tom‘ , ‘email‘: ‘[email protected]‘,‘age‘: 21 }
上面兩個文檔會被認為是兩個不同的文檔。
系統會為每一個文檔添加一個名為_id
的鍵。這個鍵是系統對屬於同一個colletion
的document
的唯一身份標識。
_id
的值是mongoDB 中的一種特殊的類型:ObjectID()
。
除非你在文檔裡給出了並指定了這個屬性的值,否則mongoDB會在文檔存入資料庫的時候為其建立一個_id
鍵。
key
- key 不能重複
- 文檔的 key 為 string 類型
- 文檔對 key 的大小寫敏感
- value
- 文檔中 value 的值可以為多種類型
- 值可以是一個文檔(內嵌文檔)
collection
- 相當於關係型資料庫的 table
collection 是無模式的:也就是說,結構不同的 document 可以屬於同一個collection,而這在關係型資料庫是做不到的,正如你無法將結構不同的兩行 放到同一張表中。
ok,既然我們可以將不同結構的document放到同一個collection中 ,為什麼我們還需要多個collection呢?
實際上,我們應該將同一種類型的document 放到一個collection中,但是這並不意味著我們對資料(document)的結構由強烈的要求,mongoDB可以讓我們更加靈活的管理資料。對文檔分類意味著產生多個collection 這樣也可以提高我們的訪問速度,降低伺服器的負擔;同時還能讓我們更好的組織和管理資料(mongoDB的DBA上輩子都是折翼的天使)。
mongoDB支援多種多樣的資料類型,其主要的是對JSON 類型的資料可擴充,總結如下:
- null
- bool
- int32
- int64
- float64
- string
- 符號
- ObjectId()
- date
- 表示為從紀元開始的毫秒數
- Regex
- javascript代碼
- 位元據
- 最大值(BSON)
- 最小值(BSON)
- undefined
- array
- cocument
下一篇講 mongoDB 的shell的基本用法。待續···
mongoDB學習初步總結