數據庫
數據庫是用於存儲數據的物理容器,每個數據庫在文件系統中都有屬於自己的文件集。一台 MongoDB 服務器中可以創建多個數據庫,並且每個數據庫都是獨立的,都有屬於自己的集合和權限,而且不同數據庫中的數據會放置在不同的文件中。
MongoDB 的默認數據庫為“test”,該數據庫存儲在 data 目錄中,您可以使用show dbs命令來查看所有的數據庫列表,如下所示:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
注意:在使用show dbs命令時,若數據庫中沒有存儲任何數據,則不會在列表中顯示出來,也就是説只有非空數據庫才能通過show dbs命令查看。
集合
集合就是一組 MongoDB 文檔的組合,類似於關係型數據庫中的數據表。集合存在於數據庫中,且沒有固定的結構,您可以向集合中插入不同格式或類型的數據。
文檔
文檔是 MongoDB 中數據的基本單位,由 BSON 格式(一種計算機數據交換格式,類似於 JSON)的鍵/值對組成,類似於關係型數據庫中的一行行數據,但要相對複雜一些。
文檔具有動態模式,所謂動態模式就是同一集合中的文檔不需要具有相同的字段,即使是相同的字段也可以是不同的類型,這與關係型數據庫有很大的區別,也是 MongoDB 最突出的特點之一。
下表列舉了關係型數據庫與 MongoDB 中的一些差異:
|
關係型數據庫
|
MongoDB
|
解釋説明
|
|
database
|
database
|
數據庫
|
|
table
|
collection
|
數據表/集合
|
|
row
|
document
|
數據行/文檔
|
|
column
|
field
|
字段/域
|
|
index
|
index
|
索引
|
|
table joins
|
|
表連接,MongoDB 中不支持
|
|
primary key
|
primary key
|
主鍵,MongoDB 會自動將 _id 字段設置為主鍵
|
下面的示例中展示了一個簡單的文檔結構:
{
_id: ObjectId(601e288aaa203cc89f2d31a7),
title: 'MongoDB Concept',
description: 'MongoDB is no sql database',
by: '編程幫',
url: 'http://www.biancheng.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100,
comments: [
{
user:'user1',
message: 'My first comment',
dateCreated: new Date(2011,1,20,2,15),
like: 0
},
{
user:'user2',
message: 'My second comments',
dateCreated: new Date(2011,1,25,7,45),
like: 5
}
]
}
上面示例中 _id 是一個 12 字節的十六進制數字,可確保每個文檔的唯一性。您可以在插入文檔時提供 _id 的具體值,但如果您不提供,那麼 MongoDB 將為每個文檔提供一個唯一的值。自動生成的 _id 中前 4 個字節是當前的時間戳,之後的 3 個字節是機器 id,再之後 2 個字節是 MongoDB 服務器的進程 id,剩下的 3 個字節是簡單的隨機數。