Raspberry Pi 筆記(69):安裝mongoDB資料庫與mongo-express網頁管理工具

mongoDB是一套開放原始碼的大數據的資料庫系統,和傳統的RDBMS不同,他是以分散式的文件(Document)形式存在系統中,可在高負載的情況下,增加多個節點,以提升其效能,也具有跨設備自動擴充的功能。本篇文章除了要實做安裝 mongoDB 跟一套透過網頁管理 mongoDB 的工具 mongo-express。
MongoDB 主要應用在網頁,數據結構由鍵值(key:value)成對組成,跟傳統關連式資料庫 RDBMS 比較,還是有一些不一樣,名稱的對應如下:
RDBMS名稱MongoDB對應名稱說明
databasedatabase資料庫
tablecollection資料表/集合
rowdocument列/文檔
columnfield欄/域
indexindex索引
table joins-資料表連接, MongoDB不支援
primary keyprimary key主要索引鍵, MongoDB自動將_id字段設置爲主要索引鍵

[安裝MongoDB]

安裝 MongoDB很簡單,只要一行指令就可以安裝完成,安裝前,先更新及升級系統。
(1) 先更新並升級系統
$ sudo apt-get update && sudo apt-get upgrade
(2) 安裝MongoDB
$ sudo apt-get install mongodb-server
安裝完成後,可以執行以下指令進入 mongoDB 的指令模式:
$ mongo
如要查看 mongoDB 的狀態,可執行:
$ sudo service mongodb status

以下是幾個常用的啟動、關閉 mongodDB的指令:
⬝ 啟動 mongoDB服務
$ sudo service mongodb start
⬝ 重新啟動 mongoDB
$ sudo systemctl restart mongodb
⬝ 關閉 mongoDB 服務
$ sudo service mongodb stop
如要離開 mongoDB 的指令模式回到終端視窗,可輸入以下指令:
> exit
或
> quit() 
如果要讓其他電腦遠端開啟 mongoDB 連線,需要在 mongoDB的設定檔中,將只允許本機執行的那一行,加上註釋。執行編輯的指令如下:
$ sudo nano /etc/mongodb.conf
找到 bind_ip = 127.0.0.1 這一行,並在該行的開頭加上井號(#)將其註釋。存檔後離開。重新啟動 mongoDB 服務後,就可以使用樹莓派的IP連線操作資料庫。

[mongoDB語法]

開啟已建立的資料庫
> use DATABASE_NAME
要留意的是執行上述命令完成後,再鍵入 show dbs時,是不會顯示剛才建立的資料庫。要顯示的話,需要給這個資料庫插入一些資料才行。插入資料到資料庫的語法如下:
> db.conllectionName.insert({"key":"value"});
其中 collectionName 要改成自己定義的 Collection 名稱。
檢查當前選擇的資料庫
> db
如果想檢查數據庫列表,使用命令show dbs.
> show dbs
刪除現有數據庫
> db.dropDatabase()
建立集合 Collection
mongoDB 的 createCollection() 方法的基本語法如下:
> db.createCollection("mycollection") { "ok" : 1 }
如果要顯示建立的集合,可以使用 show collections 命令來檢視:
> show collections

[移除mongoDB]

如果需要從Raspberry Pi中刪除MongoDB,則需要首先使用以下命令停止該服務:
$ sudo service mongod stop
然後,您可以使用以下命令刪除和清除與MongoDB關聯的所有軟件包:
$ sudo apt-get purge mongodb mongodb-clients mongodb-server mongodb-dev
$ sudo apt-get purge mongodb-org*
$ sudo apt-get autoremove
最後,將rm命令與recursive(-r)選項一起使用以刪除數據庫和日誌文件:
$ sudo rm -r /var/log/mongodb
$ sudo rm -r /var/lib/mongodb


[安裝 mongo-express]

mongo-express 是一套 Web 的 mongodb 管理工具,透使用網頁連線,管理 mongodb 的資料庫、集合及欄位等。安裝系統時,會用到 npm 程式,樹莓派 Raspbian 作業系統 Buster 初始安裝完成時,預設安裝 npm 的版本是 5.8.0,執行安裝 mongo-express 時,會出現以下錯誤:
npm WARN npm npm does not support Node.js v10.15.2
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
系統的 node.js 版本是 10.15.2,為了解決 npm 支援 node.js 問題,我將 npm 升級至 6.14.4,升級完成後,就可以正常執行 mongo-express,升級 NPM的指令如下:
$ curl https://www.npmjs.com/install.sh | sudo sh
安裝 mongo-express:
$ sudo npm install mongo-express
安裝完成後,要啟動 mongo-express,需要到 mongo-express 目錄下,執行 Node.js 才能啟動 mongo-express。啟動的指令如下:
$ cd node_modules/mongo-express
$ node app.js

這時可以使用瀏覽器,輸入樹莓派的IP,連線 8081 Port。
http://10.16.1.62:8081
這時會出現「拒絕連線」的錯誤畫面,主要是因為 mongo-expree 的 Config 檔設定僅允許 localhost 連線,要修改 config.default.js 檔案才能解決使用其他電腦連線的問題。
先進入 mongo-express 目錄,再將預設 config.default.js 設定檔複製一份成 config.js。
$ cd node_modules/mongo-express
$ cp config.default.js config.js
開啟 nano 編輯設定檔
$ nano config.js
找到以下這一行
 host: process.env.VCAP_APP_HOST || 'licalhost',
將 localhost 改成 0.0.0.0
 host: process.env.VCAP_APP_HOST || '0.0.0.0',
按下 Ctrl +  X ,再按 Y ,按下 Enter 存檔離開。
再次使用瀏覽器連線至樹莓派 IP 的 8081 Port,登入預設帳號密碼是:admin : pass

登入帳號密碼後,出現以下畫面:

按下 View 檢視資料庫:

按下 View 看 Collections 的內容:

再按下綠色的 View,可看到MongoDB startup_log 的 Collection的內容。

[參考資料]

Post a Comment

較新的 較舊