MongoDB - 總覽

大家好,有志於成為程序員的各位!今天,我們將踏上一段令人興奮的旅程,進入MongoDB的世界。作為你們親切友善的計算機科學老師,我非常興奮能夠引導你們了解這個迷人的數據庫系統。如果你之前從未寫過一行代碼,也不要擔心——我們將從最基礎的知識開始,逐步學習。所以,來一杯咖啡(或是你喜歡的飲料),讓我們一起深入探討吧!

MongoDB - Overview

MongoDB是什麼?

在我們深入細節之前,讓我們先了解一下MongoDB到底是什麼。MongoDB是一個流行的NoSQL數據庫,它提供了高性 能、高可用性和易於擴展性。它就像一個巨大且超級有組織的文件櫃,用於存儲你的數據,但它比文件櫃酷多了,也更加靈活!

簡短歷史

MongoDB是由10gen(現在的MongoDB Inc.)的團隊在2007年創建的。他們本來在構建一個平台即服務(PaaS)產品,但最終專注於數據庫組件。 "Mongo"這個名字來自於"humongous"(巨大的),因為它可以處理海量的數據。這個名字挺聰明的,不是嗎?

數據庫

在MongoDB中,一個數據庫就像是一個容器,用於存儲數據集。把它想象成一個大盒子,你把所有相關的東西放在裡面。例如,如果你正在構建一個圖書管理系統,你可能會有一個叫做"library"的數據庫。

創建數據庫

在MongoDB中創建數據庫,你可以使用use命令。以下是一個例子:

use library

這個命令會創建一個叫做"library"的新數據庫(如果它不存在),或者如果它已經存在,則切換到它。簡單吧!

集合

MongoDB中的集合與關係數據庫中的表相似。它是一組MongoDB文檔。繼續我們的圖書管理系統例子,我們可能會有"books"、"authors"和"members"等集合。

創建集合

創建集合非常簡單。以下是如何操作的:

db.createCollection("books")

這會在我們的"library"數據庫中創建一個叫做"books"的新集合。酷炫吧?

文檔

現在我們來到了MongoDB的核心。文檔是一組鍵值對,與JSON對象相似。它是MongoDB中的數據基本單位。集合中的每個文檔都可以有不同的結構——這正是MongoDB如此靈活的關鍵!

示例文檔

讓我們看看我們"books"集合中的一個示例文檔:

{
"_id": ObjectId("5f5b7f2c3e8e9f1c9c8b4567"),
"title": "To Kill a Mockingbird",
"author": "Harper Lee",
"published_date": ISODate("1960-07-11"),
"pages": 281,
"genres": ["Southern Gothic", "Bildungsroman"],
"ratings": [
{ "user": "Alice", "score": 5 },
{ "user": "Bob", "score": 4 }
]
}

讓我們來分解一下:

  1. _id:這是由MongoDB自動生成的唯一標識符。
  2. titleauthorpublished_datepages:這些都是簡單的鍵值對。
  3. genres:這是一個字符串數組。
  4. ratings:這是一個嵌入式文檔的數組。

MongoDB的美妙之處在於,你可以在同一個集合中擁有不同結構的文檔。例如,你可以有另一個包含額外字段如"edition"或"cover_type"的書本文檔。

CRUD操作

現在我們了解了基本結構,讓我們來看看如何操作我們的數據。CRUD代表創建、讀取、更新和刪除——這是你可以對數據進行的四個基本操作。

創建(插入)

要將文檔插入集合中,你可以使用insertOne()方法:

db.books.insertOne({
title: "1984",
author: "George Orwell",
published_date: new Date("1949-06-08"),
pages: 328,
genres: ["Dystopian", "Political fiction"]
})

這將在我們的"books"集合中添加一本新書。

讀取(查詢)

為了检索文檔,我們使用find()方法。以下是如何查找所有由George Orwell撰寫的書籍:

db.books.find({ author: "George Orwell" })

更新

要更新文檔,我們使用updateOne()方法。讓我們為我們的"1984"書籍添加一個評分:

db.books.updateOne(
{ title: "1984" },
{ $push: { ratings: { user: "Charlie", score: 5 } } }
)

這將向"1984"書籍的"ratings"數組中添加一個新的評分。

刪除

為了刪除文檔,我們使用deleteOne()方法:

db.books.deleteOne({ title: "1984" })

這將從我們的集合中刪除"1984"這本書。

結論

哇!我們今天學習了很多內容。我們了解了MongoDB中的數據庫、集合和文檔,甚至還嘗試了一些基本操作。記住,熟能生巧,所以不要害怕嘗試這些概念。

MongoDB的靈活性和可擴展性使它成為許多現代應用的絕佳選擇。在你繼續你的編程旅程時,你會發現了解MongoDB為處理和操作數據打開了一個新的世界。

繼續編程,保持好奇心,並記住——在數據庫的世界中,你是自己數據故事的作者。祝你在MongoDB的世界中玩得開心!

操作 方法 示例
創建 insertOne() db.books.insertOne({title: "1984", author: "George Orwell"})
讀取 find() db.books.find({author: "George Orwell"})
更新 updateOne() db.books.updateOne({title: "1984"}, {$set: {pages: 328}})
刪除 deleteOne() db.books.deleteOne({title: "1984"})

Credits: Image by storyset