數據庫

數據庫是用於存儲數據的物理容器,每個數據庫在文件系統中都有屬於自己的文件集。一台 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 個字節是簡單的隨機數。