Loading...

MongoDB 是一個開源 (open source) 的文件資料庫,為了因應大量投遞線上廣告與高速處理廣告數據的需求,在 2007 年由美國公司 10gen 所開發。

正如其他技術工具,MongoDB 同時有自己的擅長與不便之處。在業界中,不同的公司、針對不同專案,經常會選擇使用不同的資料庫系統,甚至混合使用。

在這裡,由於 MongoDB 是現階段使用者最多、生態系也最完整的文件資料庫,所以我們選用它作為資料庫的實作工具。

學習資料設計與NoSQL資料庫,實作待辦清單應用程式

Mongoose

Mongoose 是提供給 Node.js 使用的 MongoDB ODM。

透過 Mongoose,我們可以用物件導向語法,以更直覺的方式操作 MongoDB 資料庫。

資料庫綱要

Schema 是「資料庫綱要」,這份綱要定義一組資料的組成結構,包括資料的名稱、屬性、資料型別等。與此同時,schema 也會定義資料之間的關聯性以及其限制。

你需要把資料設計的結構,登錄到這份文件裡,然後資料庫會按照在 schema 定義的內容去產生資料表。

文件資料庫由於使用了彈性較高的 JSON 結構,所以其實可以不需要 schema(因此稱為 "schema-less")。但因為絕大部分應用程式的資料結構都是固定的,所以 Mongoose 還會是讓開發者定義 schema,讓我們能使用它的內建功能去處理與驗證資料。

是否該用 MongoDB?選擇資料庫前你該了解的事

安裝 MongoDB

架設專案環境的第一步,從資料庫的建置開始,也就是安裝 MongoDB,並且啟動 MongoDB 伺服器。

下載 MongoDB 社群版伺服器

官網下載

首先我們要到 MongoDB 官網下載服務,注意 MongoDB 官網以商業版服務 (Atlas) 的介紹為主,而我們現在要使用的是免費開源的社群版服務 (Community Server)。

請到 MongoDB Community Server 的下載中心 (download center):https://www.mongodb.com/download-center/community

教案中使用的 MongoDB 是 4.2.5 版本。因為版本更新很快,在你學習時,可能已經釋出了其他版本。

建議同學現在也下載 4.2.X 的版本(小更新的差異不大)。作業系統版本選 macOS 64-bit x64,按下 Download,並指定路徑將檔案存放於 Download 資料夾。檔案可能會需要下載一陣子。

按了 Download 鍵之後小心會被導入廣告頁面,注意如果畫面上有類似「Thank you for downloading MongoDB Community Server. Your download will begin shortly.」就表示已經在下載檔案了,你不需要填寫額外的資訊。

設定資料夾目錄

修改資料夾檔名為 mongodb

下載完成後,可以在 Download 資料夾中找到 mongodb-osx-ssl-x86_64-4.2.5.tgz 這個檔案,解壓縮之後會出現一個同名資料夾。

接下來我們要將資料夾移動到專門存放 web app 專案的資料夾內,在本課程裡,我們會一律把專案存放在 Mac 預設的 Home 目錄,也就是 /Users/[你的使用者名稱]/。由於以後用指令呼叫時,會需要輸入資料夾的名稱,所以在移動資料夾以後,請將資料夾改名為 mongodb,方便以後用指令呼叫。

建立新資料夾 mongodb-data 存放資料

剛才的 mongodb 資料夾是放置 MongoDB 系統本身,我們還需要建立另一個新的資料夾,用來存放資料庫紀錄。

請建立一個名為 mongodb-data 的新目錄,請注意要把這個目錄和剛才的 mongodb 放在同一層。

系統執行檔 mongodb/bin/

注意上圖,在 mongodb 目錄下有一個叫 bin 的資料夾,這個資料夾裡面存放了 MongoDB 的主要執行檔,裡面有一支叫 mongod 的執行檔,這個執行檔專門用來啟動資料庫,等下我們會用終端機指令來呼叫這個執行檔。

SQL 入門課程:14 天從語法到真實企業案例

啟動 MongoDB 伺服器

現在,請打開你的終端機,我們現在要透過指令來啟動 mongodb/bin 資料夾下的 mongod執行檔,啟動資料庫的伺服器(可以想像成是一個「電腦開機」的概念)。

找到正確的目錄

在終端機裡,切換資料夾的指令是 cd,在指令後空一格加入路徑。而剛才我們把 mongodb 資料夾存在使用者預設目錄裡,預設目錄的代號是 ~,可以寫成這樣:

cd ~

請你切換過去試試看,你還可以更進一步用 ls 把目錄清單列出來,和圖形介面對照看看,確認 mongodb 有沒有在裡面。

接下來我們要走到執行檔所在的 bin 資料夾,請在 cd 指令後加入路徑,依序為「預設目錄 → mongodb → bin」:

[~] $ cd ~/mongodb/bin/       // 切換到 mongodb 目錄

~/ 是「從 ~ 目錄開始」,不管你位在哪一個資料夾,只要加了 ~/ 就會從預設家目錄開始算。

啟動資料夾伺服器

接著,執行以下指令:

[~/mongodb/bin] $ ./mongod --dbpath /Users/[你的使用者名稱]/mongodb-data

這行指令要求電腦「執行 mongod 程式來啟動資料庫,並且要帶入位於 mongodb-data 的資料」。

有部分同學可能在第一次執行指令時,會收到 Mac 的警告訊息,告訴你這是「未識別的開發者」,因為 Apple 阻擋了不是經由 Apple Store 上架的 app,這時候需要去「安全性與隱私權」裡進行設定。設定步驟可參考這裡

先解釋一下 Linux 指令的基本結構:

mongod 這個指令主要是幫忙啟動 MongoDB 伺服器,而啟動的時候需要透過 --dbpath 告訴 MongoDB 資料存放的位置,也就是 mongodb-data,這裡必須提供完整路徑,也就是 /Users/[你的使用者名稱]/mongodb-data。

第一個關鍵字 mongodb 對應到了 mongodb/bin 目錄下的同名執行檔,前面加了 ./ 是指「同一層資料夾」的意思,這裡需要寫出來:

(編註:助教在影片示範時沒有加 ./,是因為助教的電腦有做其他額外處理,請同學特別注意,別忘記加 ./ 唷。)

執行完這些指令,你會看到與以下類似的畫面,這就是資料庫啟動的樣子:

系統訊息可能會讓你覺得眼花繚亂,如果在其中找到一行 waiting for connections on port 27017,就代表你的 MongoDB 資料庫已經在運作了,這句話的白話意思是「資料庫伺服器正在 27017 號埠口等待連線」,埠 (port) 可以想像成一個服務櫃台,總之這裡的意思是資料庫已經啟動了!

恭喜你成功啟動資料庫!

3分鐘小測驗,找到自己的web開發學習入口