MongoDB 是文件資料庫,以簡單易用、可靈活擴充著稱。相較於 PostgreSQL 等關聯式資料庫採用的傳統資料表格式,這種 NoSQL 資料庫的資料儲存方式更靈活有彈性。
MongoDB 不會透過資料列和資料欄儲存資料,而是採用類似 JSON 的文件格式,其中包含可彈性自訂的欄位和對應的值。以下提供簡單範例,說明如何透過文件使用者個人資料:
“_id”: “6327c1a4b3e3e8a5e6f7g6j1”,
“first_name”: “Praveen”,
“occupation”: “Developer”,
“employment_date”: “12/1/2025”
MongoDB 的結構定義相當有彈性,因此不必所有文件都使用相同的欄位。您可以去掉「occupation」欄位,改加上「email_address」欄位等。
不過,如果同一種資料在不同文件中的儲存方式不一致,例如有的使用「email」欄位,有的卻用「email_address」,或以不同格式儲存日期,這種彈性也可能會在日後造成困擾。
如果使用關聯式資料庫來儲存這類資料 (也就是部分使用者個人資料有記錄職業,部分沒有),可能會導致資料表過於龐大,出現許多空白欄位,或是必須採用複雜且重複的結構,將資料分散到多個資料表中。
想直接開始設定文件導向的資料庫嗎?請按這裡,瞭解如何開始使用 Firestore。
MongoDB 是 NoSQL 文件資料庫,適用於處理大量非結構化或半結構化資料。以下簡單說明 MongoDB 的主要特色和優點:
MongoDB (包括原始產品和其他多種相容的資料庫) 在簡單易用的設計中融入絕佳的靈活彈性,因此成為開發人員的熱門選擇。
MongoDB 的查詢語言 (MQL) 採用開發人員慣用的語法設計,熟悉 JavaScript 的使用者特別容易上手,可直接輕鬆寫出功能強大的查詢,用來擷取、更新或刪除資料。
您可以靈活運用各種類型的查詢,找出確切符合需求的資料,其中包括:
整體而言,MongoDB 的強項是擷取完整物件的資訊。舉例來說,如果您想收集某位使用者的所有資訊,包括姓名、訂單記錄和偏好 (這些資料可能都儲存在同一份文件中),只要執行一次查詢,就能迅速取得所需的全部內容。
不過,如果查詢需要對多個高度結構化的集合執行複雜的彙整作業 (這是關聯式資料庫擅長處理的情況),MongoDB 的效率就會比較低。
MongoDB 特別適合用於滿足各種現代應用需求,包括:
MongoDB 的文件模型十分靈活有彈性,非常適合用來儲存文章、留言、使用者資料和其他各種內容,不必受限於嚴格的結構定義。
零售產品通常有各種屬性 (尺寸、顏色、材質等),MongoDB 能輕鬆支援這些多樣化的資料點。
MongoDB 可儲存及處理大量感應器資料、事件和指標,讓系統提供即時洞察資訊。
MongoDB 的 JSON 格式能讓您輕鬆儲存使用者偏好、瀏覽記錄和個人化內容。
MongoDB 是許多應用場景的理想資料庫選擇,特別適合以半結構化或非結構化資料為主,或是資料模型可能持續進化的系統。不過,建議您也評估其他資料庫選項,確保做出正確決定。
視具體用途而定,MongoDB、Apache Cassandra 和 SQL 資料庫各有獨特的優勢,可滿足不同需求。下表列出這些選項的部分差異,協助您根據自己的應用情境選擇適用的資料庫。
功能 | SQL 資料庫 (關聯式) | MongoDB (NoSQL) | Apache Cassandra (NoSQL) |
資料模型 | 表格式 (資料列和資料欄) | 類似 JSON 的文件 | 寬欄儲存庫 (資料表內每列可彈性採用不同的資料欄) |
結構定義 | 預先定義的固定結構定義 | 有彈性的動態結構定義 | 結構比文件資料庫更嚴謹,但仍有一定的彈性 (每列可以有不同的資料欄) |
查詢語言 | SQL (結構化查詢語言) | MongoDB 查詢語言 (MQL) | Cassandra 查詢語言 (CQL) |
擴充性 | 以垂直擴充為主,水平擴展則較為複雜 | 透過 sharding 進行水平擴展 | 能跨多個節點水平擴展,專為大規模分散部署而設計 |
資料結構 | 結構化資料 | 非結構化、半結構化和結構化資料 | 非結構化、半結構化和結構化資料 |
關係 | 外鍵和 JOIN | 嵌入文件、參照 | 去標準化 |
適用情境 | 需維持資料高度一致,以及使用 JOIN 進行複雜查詢的應用 | 快速開發、資料模型持續進化,以及簡單易用的設計 | 寫入處理量極高、高可用性和大規模資料 |
SQL 資料庫 (例如 PostgreSQL) 和 NoSQL 文件資料庫 (例如 MongoDB) 代表了兩種基本的資料管理方法。
與 MongoDB 不同的是,SQL 資料庫 (又稱關聯式資料庫) 會將資料整理成資料表。每個資料表都有預先定義的格式,包含資料列和資料欄,因此相較於 MongoDB 的文件格式,SQL 資料庫通常被視為採用「固定」結構。
PostgreSQL 等 SQL 資料庫的優勢在於,能夠執行含 JOIN 的複雜查詢,高效合併多個資料表的資訊。舉例來說,可以執行「顯示上個月購買藍色襯衫且年紀超過 30 歲的芝加哥顧客」這樣的查詢。
MongoDB 和 Apache Cassandra 都是功能強大的 NoSQL 資料庫,但兩者採用截然不同的架構,適合的用途也不同。
Apache Cassandra 是寬欄儲存庫,以資料列和資料欄的形式整理資料,但結構定義相當有彈性,因此在同一資料欄系列中,不同資料列可以有不同的資料欄。
此外,Apache Cassandra 也以能在多部伺服器上處理大量資料而聞名,可在分散式系統中提供高可用性和高寫入效能。
如要使用 MongoDB 建構內容,有幾種做法可以選擇。您可以直接透過開發商 MongoDB Inc. 取得資料庫,也可以使用其他供應商提供的 MongoDB 相容服務。所謂「相容」,是指支援 MongoDB API 和查詢語言 (MQL),因此您只需稍做調整,就能沿用相同的程式碼、驅動程式和工具,同時享有額外功能或效能優勢。
以下列舉幾個最知名的 MongoDB 相容選項:
文件資料庫是一種 NoSQL 資料庫,會將資料儲存在稱為「文件」的彈性單元中,這些單元通常採用類似 JSON 的結構。與含有資料列和資料欄的表格不同,這些文件會以「欄位:值」組合的形式編排資訊,例如「Name」:「John」
每份文件通常包含一個物件的資料,例如商品目錄中的產品。您可以在多個文件使用不同欄位,如果不想在開始建構應用程式前,就設計出完美的資料結構,或是要儲存具有各種變數的物件資訊,這類資料庫會是絕佳選擇。
資料庫類型取決於您要儲存的資料種類、應用程式需求,以及您需要的彈性程度。
文件資料庫非常適合處理變數多的資料,因為並非每個物件都需要相同欄位。文件資料庫的彈性也讓開發人員愛不釋手,他們可以快速建構資料結構,並隨著時間變更。
另一方面,如果想確保資料嚴格一致,例如使用者帳戶中每個項目都必須填入完全相同的欄位,關聯式資料庫會是較佳選擇。如果您的應用程式需要使用 join 執行複雜查詢,從多個資料表擷取資料來產生結果,那麼關聯式資料庫就是理想的工具。
在與資料庫互動方面,MongoDB 支援多種程式設計語言,包括 JavaScript、Python、Java、C#、C++ 等。MongoDB 查詢語言 (MQL) 用於資料庫作業,是一種類似 JSON 的語言。
MongoDB 一般認為是容易入門的資料庫,其採用類似 JSON 的資料結構 (BSON) 和彈性結構定義,因此現代開發人員可直覺進行基本資料儲存和擷取作業。不過,在進階用途方面,由於設計有效率的資料模型 (嵌入對比參照) 相當複雜,且需要精通多階段彙整框架,才能進行複雜查詢和高效能擴充,因此掌握起來可能較困難。
Firestore 是全代管文件資料庫,可簡化雲端資料管理作業,並與 Firebase 完美整合。Firebase 是建構 AI 應用程式和代理的專用平台。
Firestore 完全相容於 MongoDB 驅動程式、工具和程式碼。無論是啟動新專案或遷移現有應用程式,您都能使用熟悉的查詢語言和功能。