MongoDB - 概述



MongoDB 是一個跨平臺的、面向文件的資料庫,它提供了高效能、高可用性和易擴充套件性。MongoDB 基於集合和文件的概念。

資料庫

資料庫是集合的物理容器。每個資料庫在檔案系統上都有自己的一套檔案。單個 MongoDB 伺服器通常有多個數據庫。

集合

集合是一組 MongoDB 文件。它相當於關係資料庫管理系統 (RDBMS) 中的表。一個集合存在於單個數據庫中。集合不強制執行模式。同一集合中的文件可以具有不同的欄位。通常,集合中的所有文件都具有相似或相關的用途。

文件

文件是一組鍵值對。文件具有動態模式。動態模式意味著同一集合中的文件不需要具有相同的欄位集或結構,並且集合文件中的公共欄位可能儲存不同型別的資料。

下表顯示了 RDBMS 術語與 MongoDB 的關係。

RDBMS MongoDB
資料庫 資料庫
集合
元組/行 文件
欄位
表連線 嵌入式文件
主鍵 主鍵(MongoDB 本身提供的預設鍵 _id)
資料庫伺服器和客戶端
mysqld/Oracle mongod
mysql/sqlplus mongo

示例文件

以下示例顯示了部落格網站的文件結構,它只是一個用逗號分隔的鍵值對。

{
   _id: ObjectId(7df78ad8902c)
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by: 'tutorials point',
   url: 'https://tutorialspoint.tw',
   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。這 12 個位元組的前 4 個位元組表示當前時間戳,接下來的 3 個位元組表示機器 ID,接下來的 2 個位元組表示 MongoDB 伺服器的程序 ID,其餘 3 個位元組是簡單的增量值。

廣告