什麼是 MongoDB?

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。

在 Firestore 上執行與 MongoDB 相容的應用程式

重點摘要

MongoDB 是 NoSQL 文件資料庫,適用於處理大量非結構化或半結構化資料。以下簡單說明 MongoDB 的主要特色和優點:

  • 採用文件模型:資料會儲存在類似 JSON 的「文件」中。這類文件會使用欄位/值組合來整理資料,方便應用程式讀取,與我們平常認知中那種供人閱讀、包含任意形式文字的文件不同。
  • 結構定義有彈性:MongoDB 中的每個文件都能有自己的欄位和結構,比關聯式資料庫的固定欄列格式更有彈性。
  • 擴充性:MongoDB 可水平擴展,將工作負載有效率地分散至多個伺服器,因此非常適合用來依流量需求調整資料規模。
  • 直覺易用:部分開發人員偏好 MongoDB,因為其查詢語言的結構與 JavaScript 等常見程式設計語言類似,因此很容易上手。
  • 支援多種語言:提供 Java、Python 和 C 等多數程式設計語言的驅動程式,因此各種應用程式都能輕鬆查詢 MongoDB 資料庫。

使用 MongoDB 的好處

MongoDB (包括原始產品和其他多種相容的資料庫) 在簡單易用的設計中融入絕佳的靈活彈性,因此成為開發人員的熱門選擇。

  • 結構定義有彈性適合敏捷開發:MongoDB 可讓您按需求調整結構定義和驗證的嚴謹程度。您可以先採用寬鬆的結構來快速設計原型,然後隨著應用程式日趨成熟,再導入嚴格的驗證規則並逐步調整資料模型。如要快速建構內容,但不想預先定義整個資料結構,便可善用 MongoDB 的彈性設計,應該會很有幫助。
  • 支援水平資源調度可靈活調整:MongoDB 專為水平資源調度而設計,可將資料分散至多個節點或叢集,這個程序稱為「sharding」。您可以讓多部伺服器分攤負載,以便快速儲存或召回資料,並根據需求的增減調整規模。
  • 可用性:MongoDB 內建資料複製功能,可提供高可用性和容錯能力。在維護期間或硬體故障時,不同資料庫伺服器上的多個資料副本可讓資料庫自動容錯移轉。

簡單易用的 MongoDB 查詢

MongoDB 的查詢語言 (MQL) 採用開發人員慣用的語法設計,熟悉 JavaScript 的使用者特別容易上手,可直接輕鬆寫出功能強大的查詢,用來擷取、更新或刪除資料。

您可以靈活運用各種類型的查詢,找出確切符合需求的資料,其中包括:

  • 欄位查詢:在多個文件中找出與特定值完全相符的內容,例如「occupation」欄位值為「Developer」的所有使用者。
  • 範圍查詢:找出落在特定範圍內的資料,例如年齡大於 35 歲的所有使用者。
  • 規則運算式查詢:找出符合特定模式的文字。例如,您可以找出所有名字開頭為字母「B」的使用者。

整體而言,MongoDB 的強項是擷取完整物件的資訊。舉例來說,如果您想收集某位使用者的所有資訊,包括姓名、訂單記錄和偏好 (這些資料可能都儲存在同一份文件中),只要執行一次查詢,就能迅速取得所需的全部內容。

不過,如果查詢需要對多個高度結構化的集合執行複雜的彙整作業 (這是關聯式資料庫擅長處理的情況),MongoDB 的效率就會比較低。

MongoDB 的常見用途

MongoDB 特別適合用於滿足各種現代應用需求,包括:

AI 模型通常需要記住過去的互動和使用者偏好,語意搜尋功能正好可為這類模型提供強大支援,而 MongoDB 等文件資料庫則可為語意搜尋提供穩固的基礎。文件資料庫可將這類「記憶」儲存為極具彈性的 JSON 或 BSON (二進位 JSON) 文件,簡化複雜資料結構的更新及擷取作業。

MongoDB 的文件模型十分靈活有彈性,非常適合用來儲存文章、留言、使用者資料和其他各種內容,不必受限於嚴格的結構定義。

零售產品通常有各種屬性 (尺寸、顏色、材質等),MongoDB 能輕鬆支援這些多樣化的資料點。

MongoDB 可儲存及處理大量感應器資料、事件和指標,讓系統提供即時洞察資訊。

MongoDB 的 JSON 格式能讓您輕鬆儲存使用者偏好、瀏覽記錄和個人化內容。

MongoDB 的替代方案

MongoDB 是許多應用場景的理想資料庫選擇,特別適合以半結構化或非結構化資料為主,或是資料模型可能持續進化的系統。不過,建議您也評估其他資料庫選項,確保做出正確決定。

視具體用途而定,MongoDB、Apache Cassandra 和 SQL 資料庫各有獨特的優勢,可滿足不同需求。下表列出這些選項的部分差異,協助您根據自己的應用情境選擇適用的資料庫。

功能

SQL 資料庫 (關聯式)

MongoDB (NoSQL)

Apache Cassandra (NoSQL)

資料模型

表格式 (資料列和資料欄)

類似 JSON 的文件

寬欄儲存庫 (資料表內每列可彈性採用不同的資料欄)

結構定義

預先定義的固定結構定義

有彈性的動態結構定義

結構比文件資料庫更嚴謹,但仍有一定的彈性 (每列可以有不同的資料欄)

查詢語言

SQL (結構化查詢語言)

MongoDB 查詢語言 (MQL)

Cassandra 查詢語言 (CQL)

擴充性

以垂直擴充為主,水平擴展則較為複雜

透過 sharding 進行水平擴展

能跨多個節點水平擴展,專為大規模分散部署而設計

資料結構

結構化資料

非結構化、半結構化和結構化資料

非結構化、半結構化和結構化資料

關係

外鍵和 JOIN

嵌入文件、參照

去標準化

適用情境

需維持資料高度一致,以及使用 JOIN 進行複雜查詢的應用

快速開發、資料模型持續進化,以及簡單易用的設計

寫入處理量極高、高可用性和大規模資料

功能

SQL 資料庫 (關聯式)

MongoDB (NoSQL)

Apache Cassandra (NoSQL)

資料模型

表格式 (資料列和資料欄)

類似 JSON 的文件

寬欄儲存庫 (資料表內每列可彈性採用不同的資料欄)

結構定義

預先定義的固定結構定義

有彈性的動態結構定義

結構比文件資料庫更嚴謹,但仍有一定的彈性 (每列可以有不同的資料欄)

查詢語言

SQL (結構化查詢語言)

MongoDB 查詢語言 (MQL)

Cassandra 查詢語言 (CQL)

擴充性

以垂直擴充為主,水平擴展則較為複雜

透過 sharding 進行水平擴展

能跨多個節點水平擴展,專為大規模分散部署而設計

資料結構

結構化資料

非結構化、半結構化和結構化資料

非結構化、半結構化和結構化資料

關係

外鍵和 JOIN

嵌入文件、參照

去標準化

適用情境

需維持資料高度一致,以及使用 JOIN 進行複雜查詢的應用

快速開發、資料模型持續進化,以及簡單易用的設計

寫入處理量極高、高可用性和大規模資料

MongoDB 與 SQL 資料庫的比較

SQL 資料庫 (例如 PostgreSQL) 和 NoSQL 文件資料庫 (例如 MongoDB) 代表了兩種基本的資料管理方法。

與 MongoDB 不同的是,SQL 資料庫 (又稱關聯式資料庫) 會將資料整理成資料表。每個資料表都有預先定義的格式,包含資料列和資料欄,因此相較於 MongoDB 的文件格式,SQL 資料庫通常被視為採用「固定」結構。

PostgreSQL 等 SQL 資料庫的優勢在於,能夠執行含 JOIN 的複雜查詢,高效合併多個資料表的資訊。舉例來說,可以執行「顯示上個月購買藍色襯衫且年紀超過 30 歲的芝加哥顧客」這樣的查詢。

MongoDB 與 Apache Cassandra 的比較

MongoDB 和 Apache Cassandra 都是功能強大的 NoSQL 資料庫,但兩者採用截然不同的架構,適合的用途也不同。

Apache Cassandra 是寬欄儲存庫,以資料列和資料欄的形式整理資料,但結構定義相當有彈性,因此在同一資料欄系列中,不同資料列可以有不同的資料欄。

此外,Apache Cassandra 也以能在多部伺服器上處理大量資料而聞名,可在分散式系統中提供高可用性和高寫入效能。

哪些資料庫與 MongoDB 相容?

如要使用 MongoDB 建構內容,有幾種做法可以選擇。您可以直接透過開發商 MongoDB Inc. 取得資料庫,也可以使用其他供應商提供的 MongoDB 相容服務。所謂「相容」,是指支援 MongoDB API 和查詢語言 (MQL),因此您只需稍做調整,就能沿用相同的程式碼、驅動程式和工具,同時享有額外功能或效能優勢。

以下列舉幾個最知名的 MongoDB 相容選項:

  • MongoDB Community Enterprise 版本:這些是 MongoDB 的原始可下載版本。您可以在自己的基礎架構上執行這些版本,全面掌控部署方式。
  • MongoDB Atlas:由 MongoDB 開發商提供的資料庫即服務 (DBaaS)。Atlas 是全代管雲端服務,可處理所有基礎架構、資源調度、備份和安全防護相關工作,且支援多個雲端平台,包括 Google Cloud。
  • Firestore:另一個全代管選項,適合想專心建構應用程式,不必費心處理營運工作的開發人員。Firestore 是 NoSQL 文件資料庫,提供一系列獨特功能 (下方另有詳細說明)。
  • Amazon DocumentDB:Amazon Web Services (AWS) 代管的資料庫服務,與 MongoDB API 相容,可直接取代 MongoDB,設計目的是讓原本使用 MongoDB 的應用程式能在 AWS 基礎架構上執行。
  • Azure Cosmos DB:Microsoft 的全球分散式多模型資料庫服務也提供 MongoDB API。您可以使用熟悉的 MongoDB 工具和技術,在 Azure 雲端平台建構應用程式。

MongoDB 常見問題

文件資料庫是一種 NoSQL 資料庫,會將資料儲存在稱為「文件」的彈性單元中,這些單元通常採用類似 JSON 的結構。與含有資料列和資料欄的表格不同,這些文件會以「欄位:值」組合的形式編排資訊,例如「Name」:「John」

每份文件通常包含一個物件的資料,例如商品目錄中的產品。您可以在多個文件使用不同欄位,如果不想在開始建構應用程式前,就設計出完美的資料結構,或是要儲存具有各種變數的物件資訊,這類資料庫會是絕佳選擇。

資料庫類型取決於您要儲存的資料種類、應用程式需求,以及您需要的彈性程度。

文件資料庫非常適合處理變數多的資料,因為並非每個物件都需要相同欄位。文件資料庫的彈性也讓開發人員愛不釋手,他們可以快速建構資料結構,並隨著時間變更。

另一方面,如果想確保資料嚴格一致,例如使用者帳戶中每個項目都必須填入完全相同的欄位,關聯式資料庫會是較佳選擇。如果您的應用程式需要使用 join 執行複雜查詢,從多個資料表擷取資料來產生結果,那麼關聯式資料庫就是理想的工具。

在與資料庫互動方面,MongoDB 支援多種程式設計語言,包括 JavaScript、Python、Java、C#、C++ 等。MongoDB 查詢語言 (MQL) 用於資料庫作業,是一種類似 JSON 的語言。

MongoDB 一般認為是容易入門的資料庫,其採用類似 JSON 的資料結構 (BSON) 和彈性結構定義,因此現代開發人員可直覺進行基本資料儲存和擷取作業。不過,在進階用途方面,由於設計有效率的資料模型 (嵌入對比參照) 相當複雜,且需要精通多階段彙整框架,才能進行複雜查詢和高效能擴充,因此掌握起來可能較困難。

什麼是具備 MongoDB 相容能力的 Firestore?

Firestore 是全代管文件資料庫,可簡化雲端資料管理作業,並與 Firebase 完美整合。Firebase 是建構 AI 應用程式和代理的專用平台。

Firestore 完全相容於 MongoDB 驅動程式、工具和程式碼。無論是啟動新專案或遷移現有應用程式,您都能使用熟悉的查詢語言和功能。

  • Google Cloud 全代管:所有營運管理作業都由 Google 處理,像是擴充、更新、備份和安全防護。
  • 即時更新:讓使用者隨時掌握最新資料。Firestore 擅長即時同步資料,因此非常適合需要最新即時資訊的應用程式,例如聊天應用程式、協作工具或需要立即重新整理資料的行動應用程式。
  • 全球 擴充性:Firestore 可自動調整資源配置,並在多個區域複製資料,因此您能輕鬆因應業務成長,同時確保全球使用者享有低延遲存取體驗,不必費心設定容量、sharding 或佈建儲存空間。
  • 領先業界的可用性和效能:Firestore 具備領先業界的高可用性 (服務水準協議高達 99.999%),以及只有個位數毫秒的讀取延遲效能。
  • 向量 資料庫:您可以在 Firestore 儲存向量嵌入,並對資料執行向量搜尋。這項功能可讓您執行快速的相似度搜尋,這是現代 AI 應用程式和代理的基礎。
  • 內建 Google Cloud 整合功能:Firestore 是 Google Cloud 和 Firebase 的一部分,可與 Firebase Auth、BigQuery 和許多其他強大服務完美整合。
  • 用量較低時可享免費方案:Firestore 提供免費方案,非常適合新創公司或小型專案,讓他們在成長過程中擴充規模,且無需預付費用。

後續行動

立即透過免費方案,體驗可擴充又強大的文件資料庫。運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。