MongoDB
什麼是 MongoDB?
什麼是 MongoDB?
MongoDB 是一個開源、面向文件的 NoSQL 資料庫系統。資料使用類似 JavaScript 物件表示法 (JSON) 的結構儲存,這些結構可以在資料儲存時指定。
每個文件都可以有自己的結構,根據需要具有或多或少的複雜性。MongoDB 提供非 SQL 方法和命令,以程式化或互動方式管理和查詢資料。MongoDB 以其快速的效能、可擴展性以及實現快速開發步調而聞名。
如果您正在使用 MongoDB,請查看 Prisma 的 MongoDB 連接器!您可以使用 Prisma Client 來自信地管理生產環境 MongoDB 資料庫。
要開始使用 MongoDB 和 Prisma,請查看我們的從頭開始入門指南,或如何新增至現有專案。
起源故事
MongoDB 由 Dwight Merriman、Eliot Horowitz 和 Kevin Ryan 於 2007 年創立。他們之前在一家網路廣告公司工作,該公司每秒服務 40 萬個廣告。
該團隊正在開發許多自訂資料儲存庫以適應此流量。他們經常在可擴展性和敏捷性方面遇到困難,這啟發了他們創建一個解決這些問題的資料庫。於是,MongoDB 就誕生了。
運作方式
為了實現更好的可擴展性和敏捷性,MongoDB 使用 JSON 變體,即二進位 JSON 或 BSON。BSON 比 JSON 可容納更多資料類型,為可以儲存在 MongoDB 中的資料類型提供了更大的彈性。
MongoDB 資料結構
MongoDB 沒有由列和欄位組成的表格,而是由集合組成,而集合又由文件組成。文件由欄位和值對組成。與關聯式資料庫相比,組成 MongoDB 資料庫的各個部分可以大致認為如下
關聯式 | 文件 | |
---|---|---|
表格 | = | 集合 |
列 | = | 文件 |
欄 | = | 欄位 |
基本結構如下所示
{field1: value1,field2: value2,field3: value3,...fieldN: valueN}
文件看起來非常類似 JSON 物件。文件可以包含任何可用的 BSON 資料類型,以及其他文件、陣列和文件陣列。這種 JSON 樣式的格式直接對應於大多數現代程式語言中的原生物件,使其成為開發人員的自然選擇。
一個範例看起來會像這樣
var mydoc = {_id: ObjectId("5099803df3f4948bd2f98391"),name: { first: "James", last: "Joyce" },birth: new Date('Feb 02, 1882'),death: new Date('Jan 14, 1941'),books: [ "Ulysses", "Dubliners","Finnegan's Wake" ],sales : NumberLong(1250000)}
_id
持有一個[ObjectId].name
持有一個嵌入式文件,其中包含欄位first
和last
。birth
和death
持有[Date]類型的值。books
持有一個[字串].sales
持有[NumberLong]類型的值。
類型的值。根據資料模型,關聯式資料庫可能會使用 author
表格和 book
表格(使用類似 author_id
的東西連接),而不是使用單一文件來容納有關 James Joyce 及其作品的所有資訊。
在這個特定的簡單用例中,文件模型簡化了資料存取,並將一起存取的資料儲存在一起。
MongoDB 文件 vs SQL 表格記錄
在先前的範例基礎上,讓我們看看 MongoDB 中的文件與關聯式資料庫中相同的記錄相比如何。在關聯式資料庫中,儲存記錄的表格可能看起來像這樣
primary_key | first_name | last_name | age | email | phone_number |----------- | ---------- | --------- | --- | -------------------- | ------------ |1 | Tom | Brown | 38 | tom.b@email.com | 555-3802 |2 | Sarah | Green | 84 | (NULL) | 555-8088 |3 | Sam | White | 22 | sammi@123.org | 555-1234 |
然而,正如我們之前在作者文件中看到的那樣,MongoDB 中類似文件的集合可能會以 JSON 形式塑模如下
{primary_key: 1,first_name: "Tom",last_name: "Brown",age: 38,email_address: "tom.b@email.com",phone_number: "555-3802"},{primary_key: 2,first_name: "Sarah",last_name: "Green",age: 84,phone_number: "555-8088"},{primary_key: 3,first_name: "Sam",last_name: "White",age: 22,email_address: "sammi@123.org",phone_number: "555-1234",notes: ["High value customer","Has a dog named Fido"]}
決定使用文件資料庫還是關聯式資料庫取決於資料庫儲存的資料類型以及應如何存取它。MongoDB 的文件促進了靈活性而非嚴格性,並簡化了從應用程式存取資料的方式。
MongoDB 查詢語言
由於 MongoDB 資料庫是面向文件的,因此資料通常不遵循像關聯式資料庫那樣的預定義結構描述。這使得存取資料的方式與使用結構化查詢語言 (SQL) 查詢關聯式資料庫時不同。MongoDB 有自己的查詢語言,簡稱為 MongoDB 查詢語言 (MQL)。
與 SQL 類似,MQL 也允許使用者在特定規範下存取資料。您可以控制返回符合需求標準的文件。在本指南中,我們不會深入探討 MongoDB 中查詢的更精細細節,但您可以在我們的 MongoDB 查詢指南中閱讀更多相關資訊。
MongoDB 中查詢的基本語法看起來會像這樣
db.<collection_name>.find()
為了產生更美觀的查詢結果格式,您可以使用 .pretty()
。
db.<collection_name>.find().pretty()
結論
MongoDB 已成為市場上最受歡迎的 NoSQL 資料庫。開發人員喜歡使用 MongoDB,因為它能夠讓他們靈活且敏捷地工作。
MongoDB 提供了關聯式資料庫嚴格性的替代方案,更適合具有不斷演進的結構描述的應用程式。查看我們的一些其他 MongoDB 內容,以獲取有關MongoDB 入門、索引、交易等的深入指南。
如果您正在使用 MongoDB,請查看 Prisma 的 MongoDB 連接器!您可以使用 Prisma Client 來自信地管理生產環境 MongoDB 資料庫。
要開始使用 MongoDB 和 Prisma,請查看我們的從頭開始入門指南,或如何新增至現有專案。