返回文章列表

macOS 安裝設定 MongoDB

本文介紹如何在 macOS 系統上安裝和設定 MongoDB Community Edition,包含使用 Homebrew 安裝 MongoDB、驗證安裝、連線 MongoDB Shell 以及基本操作指令等步驟。同時也探討 MongoDB 的架構、集合、檔案、儲存引擎等核心概念,並解析程式碼範例,幫助讀者快速上手

資料函式庫 Web 開發

在 macOS 環境下,安裝 MongoDB 通常仰賴 Homebrew 套件管理器。首先需確認系統已安裝 Homebrew,若無則需先安裝。接著,透過 Homebrew 安裝 MongoDB Community Edition,並透過啟動 MongoDB Shell 和執行指令驗證安裝是否成功。後續可透過 MongoDB Shell 進行資料函式庫操作和管理,例如檢視現有資料函式庫、建立集合等。對於 MongoDB 的核心概念,包含檔案、集合、儲存引擎等,本文也提供了詳細的說明,並佐以程式碼範例,讓讀者更容易理解和應用。

在 macOS 上安裝和設定 MongoDB

本章節將介紹如何在 macOS 上安裝和設定 MongoDB Community Edition,並進行安裝後的驗證檢查。

在 macOS 上安裝 MongoDB Community Edition

步驟 1:安裝 Homebrew

macOS 預設沒有安裝 Homebrew 套件管理器,因此需要先安裝 Homebrew。

  1. 開啟 Homebrew 官方網站 https://brew.sh,並複製首頁頂部的安裝指令碼。
  2. 開啟終端機(Terminal),將複製的指令碼貼上並執行:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

內容解密:

此指令碼會從 Homebrew 的 GitHub 倉函式庫下載安裝指令碼並執行,以安裝 Homebrew。curl 命令用於下載檔案,-fsSL 引數確保下載過程順利進行。

  1. 安裝完成後,會顯示「Installation Successful」訊息。

步驟 2:使用 Homebrew 安裝 MongoDB Community Edition

  1. 安裝好 Homebrew 後,可以使用以下命令安裝 MongoDB Community Edition:
brew tap mongodb/brew
brew install [email protected]

內容解密:

brew tap 命令用於新增 MongoDB 的 Homebrew 倉函式庫,mongodb/brew 是 MongoDB 的倉函式庫名稱。brew install 命令則用於安裝 MongoDB Community Edition,[email protected] 指定了要安裝的版本。

驗證 MongoDB 安裝

  1. 開啟新的終端機視窗,執行以下命令啟動 MongoDB Shell:
mongo

內容解密:

mongo 命令用於啟動 MongoDB Shell,讓使用者可以與 MongoDB 資料函式庫互動。

  1. 在 MongoDB Shell 中,執行以下命令檢視現有的資料函式庫:
show databases

內容解密:

show databases 命令用於列出目前 MongoDB 中的所有資料函式庫。

  1. 要離開 MongoDB Shell,可以執行以下命令:
exit

內容解密:

exit 命令用於離開 MongoDB Shell,傳回到終端機命令列。

常見問題

  1. 如何下載 MongoDB 安裝檔案?
  2. 如何在 macOS 上啟動 MongoDB 服務?
  3. 如何驗證 MongoDB 是否已成功安裝在 macOS 上?
  4. 如何連線到 MongoDB Shell?

下一章節預告

下一章節將介紹如何在 Windows 平台上安裝和設定 MongoDB。敬請期待!

在 macOS 上安裝與設定 MongoDB

在 macOS 上安裝 MongoDB 需要透過 Homebrew 套件管理器來完成。以下將詳細介紹安裝步驟及相關指令。

步驟 1:安裝 Homebrew

首先,確保你的 macOS 上已安裝 Homebrew。如果尚未安裝,請在終端機中執行以下指令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

此指令將下載並執行 Homebrew 的安裝指令碼。

步驟 2:透過 Homebrew 安裝 MongoDB

  1. 新增 MongoDB Tap:在終端機中執行以下指令,以新增 MongoDB 的 Tap:

    brew tap mongodb/brew
    

    此步驟將新增 MongoDB 的自訂 Tap 至你的 Homebrew 環境中。

  2. 安裝 MongoDB Community Server:接著,執行以下指令以安裝 MongoDB Community Server:

    brew install mongodb-community
    

    或者,你可以指定特定版本進行安裝:

    brew install mongodb-community@<latest-version>
    

    其中 <latest-version> 應替換為你想要安裝的 MongoDB 版本。

  3. 檢視安裝進度:安裝過程中,你可以在終端機中看到進度更新。

  4. 確認安裝完成:當安裝完成後,終端機會顯示成功安裝的訊息。

程式碼解析:

# 安裝 Homebrew(如果尚未安裝)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 新增 MongoDB Tap
brew tap mongodb/brew

# 安裝 MongoDB Community Server
brew install mongodb-community

內容解密:

  1. 首先,我們檢查是否已安裝 Homebrew,並在需要時進行安裝。
  2. brew tap mongodb/brew 指令用於新增 MongoDB 的自訂 Tap,讓 Homebrew 可以找到並安裝 MongoDB 相關套件。
  3. brew install mongodb-community 指令負責安裝 MongoDB Community Server,讓你可以在 macOS 上使用 MongoDB 資料函式庫。

步驟 3:啟動 MongoDB 服務

為了驗證 MongoDB 是否正確安裝,請執行以下步驟:

  1. 啟動 MongoDB 服務:在終端機中執行以下指令:
    brew services start mongodb-community
    
    此指令將啟動 MongoDB 服務。

程式碼解析:

# 啟動 MongoDB 服務
brew services start mongodb-community

內容解密:

  • 此指令用於啟動 MongoDB 服務,讓你可以在本機上使用 MongoDB 資料函式庫。

步驟 4:連線至 MongoDB

現在,讓我們嘗試從終端機連線至 MongoDB:

  1. 開啟新的終端機視窗,並執行以下指令以開啟 MongoDB Shell:

    mongo
    

    你將進入 MongoDB Shell 介面,可以在其中執行各種 MongoDB 指令。

  2. 測試連線:在 MongoDB Shell 中,輸入以下指令以檢視現有的資料函式庫:

    show databases
    

    此指令將列出你係統中存在的 MongoDB 資料函式庫。

  3. 離開 MongoDB Shell:輸入以下指令以離開:

    exit
    

    你將傳回至普通的終端機介面。

程式碼解析:

# 連線至 MongoDB Shell
mongo

# 檢視現有的資料函式庫
show databases

# 離開 MongoDB Shell
exit

內容解密:

  1. mongo 指令用於開啟 MongoDB Shell,讓你可以與 MongoDB 資料函式庫互動。
  2. show databases 指令列出目前系統中存在的資料函式庫,幫助你驗證連線是否成功。
  3. exit 指令用於離開 MongoDB Shell,傳回至終端機介面。

MongoDB 資料函式庫詳解

在探討 MongoDB 資料函式庫之前,我們先來瞭解什麼是資料函式庫、關聯式資料函式庫和 NoSQL 資料函式庫。

什麼是資料函式庫?

資料函式庫是一組儲存在資料函式倉管理系統(DBMS)中的資料集合。資料是最小的單位,經過處理後轉換成資訊。因此,這些資料以結構化的方式儲存在資料函式庫中,並藉助 DBMS 處理成有用的資訊,以利於分析和決策過程。

總的來說,資料函式庫允許我們以結構化的方式(如表格、列和欄)儲存資料,並藉助資料函式倉管理系統進行處理。

任何 DBMS 的主要功能是:

  • 儲存資料
  • 檢索資料
  • 操作資料
  • 處理資料

這些功能是透過資料查詢語言(如結構化查詢語言(SQL)或 MongoDB 查詢語言(MQL))來實作的。

什麼是關聯式資料函式庫?

關聯式資料函式庫包含具有某種關係的資料記錄,通常有多個表格透過鍵值或欄位值對相互連結。例如,如果表格 A 有一個唯一的 primary key 欄位,那麼它就與表格 B 相連結,表格 B 有一個儲存表格 A primary key 的欄位(也稱為 foreign key)。這種相互連結的資料表格構成了關聯式資料函式庫,如下圖所示。

什麼是 NoSQL 資料函式庫?

NoSQL 資料函式庫是一種以不同於關聯式資料函式倉管理系統(根據 SQL 的資料函式庫)的方式儲存、檢索和操作資料的資料函式庫。它有時被稱為 NoSQL 資料函式庫,有時被稱為 “Not Only SQL”。

MongoDB 就是其中一種 NoSQL 資料函式庫。與 SQL 資料函式庫不同,NoSQL 資料函式庫如 MongoDB 以不同的方式儲存關聯式資料,這使得它們在儲存和擴充套件方面更加靈活,更有利於開發者。

什麼是 MongoDB 資料函式庫?

MongoDB 資料函式庫是一種檔案導向的資料函式庫,以類別似 JSON 的檔案形式儲存資料,具有動態的 schema。動態 schema 的概念是無需過多擔心資料函式庫的結構部分就能儲存記錄。MongoDB 資料函式庫是一組具有 JSON 結構的檔案集合,這些檔案在 schema 上並不十分嚴格。同一個集合中的檔案可以不同。

MongoDB 的架構設計根據集合和檔案。基本的單位(即資料)由鍵值或欄位值對組成,允許檔案具有不同的欄位和結構,以滿足其靈活性和動態 schema 的需求。

MongoDB 集合詳解

在探討 MongoDB 集合之前,先來回顧一下 RDBMS 中的表格。

RDBMS 中的表格是什麼?

表格是一組相關的資料,以列和欄的形式儲存在 RDBMS 中。列提供了結構,且對於插入表格的所有列來說都是相同的。

MongoDB 中的集合是什麼?

MongoDB 中的集合是一組 MongoDB 檔案的集合,通常具有動態性質,因為集合不強制 schema。集合相當於 RDBMS 中的表格。這裡的重要特點是它允許動態 schema,也就是說,集合可以儲存結構不同的檔案。

MongoDB 檔案詳解

在探討 MongoDB 檔案之前,我們需要了解 RDBMS 中的一些術語及其在 MongoDB 中的等價物。

RDBMS 中的列和欄

我們已經瞭解到,列和欄共同構成了 RDBMS 中的表格。在 MongoDB 中,檔案由集合繫結。唯一的區別是,MongoDB 中的集合可以儲存結構不同的檔案,具有不同的資料型別和值。

MongoDB 中的檔案是什麼?

我們知道 MongoDB 是一種根據檔案的資料函式庫,MongoDB 中的每個記錄都稱為檔案。這些檔案由鍵值或欄位值對組成,就像 JSON 一樣,如本文第 1 章 “MongoDB 簡介” 中所討論的那樣。這些檔案以 BSON(二進位制 JSON)格式儲存在 MongoDB 中。MongoDB 中的檔案是一種二進位制格式,類別似於 JSON。

讓我們來看一個實際的例子,瞭解 MongoDB 檔案是如何儲存真實資料的,如下圖所示:

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title macOS 安裝設定 MongoDB

package "資料庫架構" {
    package "應用層" {
        component [連線池] as pool
        component [ORM 框架] as orm
    }

    package "資料庫引擎" {
        component [查詢解析器] as parser
        component [優化器] as optimizer
        component [執行引擎] as executor
    }

    package "儲存層" {
        database [主資料庫] as master
        database [讀取副本] as replica
        database [快取層] as cache
    }
}

pool --> orm : 管理連線
orm --> parser : SQL 查詢
parser --> optimizer : 解析樹
optimizer --> executor : 執行計畫
executor --> master : 寫入操作
executor --> replica : 讀取操作
cache --> executor : 快取命中

master --> replica : 資料同步

note right of cache
  Redis/Memcached
  減少資料庫負載
end note

@enduml

此圖示展示了 MongoDB 檔案的基本結構和儲存方式。

內容解密:

  1. MongoDB 檔案的基本結構:MongoDB 檔案由鍵值對組成,這些鍵值對類別似於 JSON 物件。
  2. BSON 格式:MongoDB 將檔案儲存在 BSON(二進位制 JSON)格式中,這是一種二進製表示形式,能夠高效地儲存和檢索資料。
  3. 動態 schema:MongoDB 的一大特點是其動態 schema,這意味著同一個集合中的檔案可以具有不同的結構和欄位。

綜上所述,MongoDB 提供了一種靈活且高效的方式來儲存和管理資料,其根據檔案的結構和動態 schema 的特性使其成為處理複雜和多變資料的理想選擇。

MongoDB Shell 簡介

MongoDB Shell 是 MongoDB 的互動介面,允許使用者與 MongoDB 資料函式庫互動,執行各種 CRUD(建立、讀取、更新和刪除)操作以及管理 MongoDB。當您在機器上安裝 MongoDB 伺服器時,MongoDB Shell 會自動安裝。您也可以從 MongoDB 官方網站單獨下載並安裝它。

連線到 MongoDB Shell

要連線到 MongoDB Shell,請按照以下步驟操作:

  1. 開啟一個新的命令列視窗,導航到 MongoDB 的 bin 目錄。路徑可能如下所示:
    C:\Program Files\MongoDB\Server\4.4\bin
    
  2. 輸入以下命令並按下 Enter:
    mongo
    
    這將開啟 MongoDB Shell,您可以在其中輸入 MongoDB 相關的命令。
  3. 若要測試,請輸入以下命令並按下 Enter:
    show databases
    
    這將顯示目前的資料函式庫列表。
  4. 若要離開 MongoDB Shell,請輸入以下命令並按下 Enter:
    exit
    

基本 Shell 命令

MongoDB Shell 是一個根據 JavaScript 的介面,允許您執行各種 CRUD 和管理操作。除了 MongoDB 特定的操作外,它還可以解釋 JavaScript 命令。

基本命令輔助工具

以下是一些重要的 MongoDB Shell 命令輔助工具:

  • help:顯示基本幫助命令的詳細資訊。
  • db.help():顯示資料函式庫方法的詳細資訊。
  • show databases:顯示所有資料函式庫的列表。
  • use <db>:切換到指定的資料函式庫。
  • show collections:顯示目前資料函式庫中的集合列表。
  • db.<collection-name>.help():顯示集合相關方法的詳細資訊。

MongoDB Shell 命令歷史記錄

MongoDB Shell 會儲存您在會話中執行的命令歷史記錄。您可以使用上下箭頭鍵輕鬆檢索之前使用的命令。

使用上下箭頭鍵

  • 上箭頭鍵用於檢索當前位置之前的命令。
  • 下箭頭鍵用於檢索當前位置之後的命令。

MongoDB儲存引擎詳解

在資料函式倉管理系統中,儲存引擎是提供CRUD(建立、讀取、更新、刪除)功能給使用者的軟體元件。儲存引擎定義了資料如何儲存在資料函式庫中,以及資料在記憶體和磁碟中的儲存方式。

儲存引擎的重要性

資料函式庫使用其儲存引擎來儲存和檢索資料到記憶體和磁碟。因此,選擇正確的儲存引擎對於應用程式的效能至關重要。

MongoDB支援的儲存引擎

MongoDB支援多種儲存引擎,每種引擎都有其獨特的功能。主要支援的儲存引擎包括:

  • WiredTiger
  • In-memory
  • Encrypted
  • MMAPv1(在MongoDB 4.2及更高版本中已移除)

WiredTiger儲存引擎

WiredTiger是MongoDB預設的儲存引擎,從MongoDB 3.2版本開始。它適用於大多數工作負載,因此被推薦用於大多數應用程式。WiredTiger使用檔案級別的平行控制來處理寫入操作,能夠高效地處理多個請求。

// 使用WiredTiger儲存引擎的範例
// MongoDB預設使用WiredTiger,無需額外設定

內容解密:

此範例展示了WiredTiger儲存引擎的使用。由於WiredTiger是預設的儲存引擎,因此無需進行額外的設定。WiredTiger能夠提供高達7到10倍的寫入效能,並且能夠減少儲存空間,達到高達80%的壓縮率。

In-memory儲存引擎

In-memory儲存引擎將資料儲存在記憶體中,以提供更快的存取速度。

// 使用In-memory儲存引擎的範例
// 需要在建立資料函式庫時指定儲存引擎
db = db.getSiblingDB('mydatabase');
db.createCollection('mycollection', { storageEngine: { inMemory: {} } });

內容解密:

此範例展示瞭如何使用In-memory儲存引擎。在建立集合時,需要指定storageEngine選項,並選擇inMemory。這樣,資料將儲存在記憶體中,以提供更快的存取速度。

Encrypted儲存引擎

Encrypted儲存引擎提供了資料加密功能,以保護資料的安全性。

// 使用Encrypted儲存引擎的範例
// 需要在建立資料函式庫時指定儲存引擎和加密選項
db = db.getSiblingDB('mydatabase');
db.createCollection('mycollection', { storageEngine: { wiredTiger: { configString: 'encryption=true' } } });

內容解密:

此範例展示瞭如何使用Encrypted儲存引擎。在建立集合時,需要指定storageEngine選項,並選擇wiredTiger,然後設定configStringencryption=true。這樣,資料將被加密儲存,以保護資料的安全性。

MongoDB鎖機制

MongoDB使用鎖機制來控制對資料的平行存取。鎖機制能夠防止多個操作同時修改相同的資料,從而確保資料的一致性。

// MongoDB鎖機制的範例
// MongoDB內部自動處理鎖機制,無需手動干預

內容解密:

此範例展示了MongoDB的鎖機制。MongoDB內部自動處理鎖機制,無需手動干預。鎖機制能夠確保資料的一致性和完整性。