http://www.w3cschool.cc/mongodb/mongodb-databases-documents-collections.htmlphp
無論咱們學習什麼數據庫都應該學習其中的基礎概念,在mongodb中基本的概念是文檔、集合、數據庫,下面咱們挨個介紹。html
一個mongodb中能夠創建多個數據庫。mongodb
MongoDB的默認數據庫爲"db",該數據庫存儲在data目錄中。數據庫
在MongoDB中能夠建立數據庫,若是你想使用MongoDB,建立數據庫不是必要的。json
"show dbs" 命令能夠顯示全部數據的列表。數組
執行 "db" 命令能夠顯示當前數據庫對象或者集合。服務器
運行"use"命令,能夠鏈接到一個指定的數據庫。數據結構
以上實例命令中,"student" 是你要檢索的數據庫。app
在下一個章節咱們將詳細講解MongoDB中命令的使用。函數
數據庫名稱能夠是任何字符,可是不能包含空字符串,點號(.),或者" "。
"system" 做爲系統保留字符串不能做爲數據庫名。
數據庫名不能包含 "$"。
文檔是mongodb中的最核心的概念,是其核心單元,咱們能夠將文檔類比成關係型數據庫中的每一行數據。
多個鍵及其關聯的值有序的放置在一塊兒就是文檔。在mongodb中使用一種類json的bson存儲數據。
bson數據能夠理解爲在json的基礎上添加了一些json中沒有的數據類型。
若是咱們會json,那麼bson咱們就已經掌握了一半了,至於新添加的數據類型後面我會介紹。
文檔例子以下:
一般,"object(對象)" 術語是指一個文件。
文件相似於一個RDBMS的記錄。
咱們能夠對集合(collection)進行插入,更新和刪除操做。
下表將幫助您更容易理解Mongo中的一些概念:
RDBMS | MongoDB |
---|---|
Table(表) | Collection(集合) |
Column(欄) | Key(鍵) |
Value(值) | Value(值) |
Records / Rows(記錄/列) | Document / Object(文檔/對象) |
下表爲MongoDB中經常使用的幾種數據類型。
數據類型 | 描述 |
---|---|
string(字符串) | 能夠是一個空字符串或者字符組合。 |
integer(整型) | 整數。 |
boolean(布爾型) | 邏輯值 True 或者 False。 |
double | 雙精度浮點型 |
null | 不是0,也不是空。 |
array | 數組:一系列值 |
object | 對象型,程序中被使用的實體。能夠是一個值,變量,函數,或者數據結構。 |
timestamp | timestamp存儲爲64爲的值,只運行一個mongod時能夠確保是惟一的。前32位保存的是UTC時間,單位是秒,後32爲是在這一秒內的計數值,從0開始,每新建一個MongoTimestamp對象就加一。 |
Internationalized Strings | UTF-8 字符串。 |
Object IDs | 在 mongodb中的文檔須要使用惟一的關鍵字_id來標識他們。幾乎每個mongodb文檔都使用_id字段做爲第一個屬性(在系統集合和定容量集合 (capped collection)中有一些例外)。_id值能夠是任何類型,最多見的作法是使用ObjectId類型。 |
集合就是一組文檔的組合。若是將文檔類比成數據庫中的行,那麼集合就能夠類比成數據庫的表。
在mongodb中的集合是無模式的,也就是說集合中存儲的文檔的結構能夠是不一樣的,好比下面的兩個文檔能夠同時存入到一個集合中:
當第一個文檔插入時,集合就會被建立。
集合名稱必須以字母或下劃線開頭。
集合名能夠保護數字
集合名稱不能使美圓符"$","$"是系統保留字符。
集合的名字 最大不能超過128個字符 。
另外,"."號的使用在集合當中是容許的,它們被成爲子集合(Subcollection);好比你有一個blog集合,你可使用blog.title,blog.content或者blog.author來幫組你更好地組織集合。
以下實例:
Capped collections 就是固定大小的collection。
它有很高的性能以及隊列過時的特性(過時按照插入的順序). 有點和 "RRD" 概念相似。
Capped collections是高性能自動的維護對象的插入順序。它很是適合相似記錄日誌的功能 和標準的collection不一樣,你必需要顯式的建立一個capped collection, 指定一個collection的大小,單位是字節。collection的數據存儲空間值提早分配的。
要注意的是指定的存儲大小包含了數據庫的頭信息。
數據庫的信息是存儲在集合中。它們使用了系統的命名空間:
在MongoDB數據庫中名字空間 <dbname>.system.* 是包含多種系統信息的特殊集合(Collection),以下:
集合命名空間 | 描述 |
---|---|
dbname.system.namespaces | 列出全部名字空間。 |
dbname.system.indexes | 列出全部索引。 |
dbname.system.profile | 包含數據庫概要(profile)信息。 |
dbname.system.users | 列出全部可訪問數據庫的用戶。 |
dbname.local.sources | 包含複製對端(slave)的服務器信息和狀態。 |
對於修改系統集合中的對象有以下限制。
在{{system.indexes}}插入數據,能夠建立索引。但除此以外該表信息是不可變的(特殊的drop index命令將自動更新相關信息)。
{{system.users}}是可修改的。 {{system.profile}}是可刪除的。