Mongodb 的介紹和安裝以及簡單的使用
一:MongoDB 的介紹
1.1 什麼是mongodb
-
mongodb 是一個功能最豐富的NoSQL非關係資料庫。由 C++ 語言編寫。
-
mongodb 本身提供S端儲存資料,即server;也提供C端操作處理(如查詢等)資料,即client。
1.2 SQL和NoSQL的主要區別
-
在SQL中層級關係: 資料庫>表>資料
-
而在NoSQL中則是: 資料庫>集合>文件
1.2.1 資料之間無關聯性
-
SQL中如何需要增加外部關聯資料的話,規範化做法是在原表中增加一個外來鍵,關聯外部資料表。
-
NoSQL則可以把外部資料直接放到原資料集中,以提高查詢效率。缺點也比較明顯,對關聯資料做更新時會比較麻煩。
-
SQL中在一個表中的每條資料的欄位是固定的。而NoSQL中的一個集合(表)中的每條文件(資料)的key(欄位)可以是互不相同的。
1.2.2 拓展閱讀
1.3 mongodb作為非關係型資料庫相較於關係型資料庫的優勢
易擴充套件: NoSQL資料庫種類繁多, 但是一個共同的特點都是去掉關係資料庫的關係型特性。 資料之間無關係, 這樣就非常容易擴充套件
大資料量,高效能: NoSQL資料庫都具有非常高的讀寫效能, 尤其在大資料量下表現優秀。 這得益於它的非關係性,資料庫的結構簡單
靈活的資料模型: NoSQL無需事先為要儲存的資料建立欄位, 隨時可以儲存自定義的資料格式。 而在關係資料庫中, 增刪欄位是一件非常麻煩的事情。 如果是非常大資料量的表, 增加欄位簡直就是一個噩夢
二:MongoDB 的安裝
1:Linux 中安裝
1:安裝依賴的安裝包
yum install libcurl openssl
2:MongoDB 原始碼下載地址:
3:這裡我們選擇 tgz 下載,下載完安裝包,並解壓 tgz(以下演示的是 64 位 Linux上的安裝)
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz # 下載
tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz# 解壓 mv mongodb-src-r4.2.8/usr/local/mongodb4 # 將解壓包拷貝到指定目錄
4:MongoDB 的可執行檔案位於 bin 目錄下,所以可以將其新增到 PATH 路徑中:
export PATH=<mongodb-install-directory>/bin:$PATH
<mongodb-install-directory> 為你 MongoDB 的安裝路徑。如本文的 /usr/local/mongodb4 。
[root@xpq bin]# export PATH=/usr/local/mongodb/mongodb-linux-x86_64-3.6.21/bin:$PATH
2:Ubuntu 中安裝
2.1 命令安裝
在ubuntu中使用apt-get工具安裝
sudo apt-get install -y mongodb-org
或參考官方文件 /
2.2 原始碼安裝
2.2.1 選擇相應版本和作業系統並下載
2.2.2 解壓
tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.0.3.tgz
2.2.3 移動到/usr/local/目錄下
sudo mv -r mongodb-linux-x86_64-ubuntu1804-4.0.3/ /usr/local/mongodb
2.2.4 在shell的初始化指令碼.bashrc中新增mongodb可執行檔案到環境變數PATH中
a. 進入.bashrc檔案中
cd ~
sudo vi .bashrc
b. 在.bashrc檔案的最後新增:
export PATH=/usr/local/mongodb/bin:$PATH
3:window中安裝
https://www.runoob.com/mongodb/mongodb-window-install.html
三:MongoDB的簡單實用
1. mongodb服務端的啟動
-
預設埠:27017
-
預設配置檔案的位置:/etc/mongod.conf
-
預設日誌的位置:/var/log/mongodb/mongod.log
mongodb服務端啟動分別兩種方式:
-
本地測試方式的啟動(只具有本地資料增刪改查的功能)
-
生產環境啟動(具有完整的全部功能)
1.1 測試方式啟動
-
啟動: sudo service mongod start (sudo service mongod start)
-
停止: sudo service mongod stop
-
重啟: sudo service mongod restart
1.2 生產環境正式的啟動方式
預設情況下 MongoDB 啟動後會初始化以下兩個目錄:
- 資料儲存目錄:/var/lib/mongodb
- 日誌檔案目錄:/var/log/mongodb
我們在啟動前可以先建立這兩個目錄並設定當前使用者有讀寫許可權:
sudo mkdir -p /var/lib/mongo sudo mkdir -p /var/log/mongodb sudo chown `whoami`/var/lib/mongo # 設定許可權 sudo chown `whoami`/var/log/mongodb # 設定許可權
接下來啟動 Mongodb 服務:
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
開啟 /var/log/mongodb/mongod.log 檔案看到以下資訊,說明啟動成功。
# tail -10f /var/log/mongodb/mongod.log2020-07-09T12:20:17.391+0800 I NETWORK [listener]Listening on /tmp/mongodb-27017.sock2020-07-09T12:20:17.392+0800 I NETWORK [listener]Listening on 127.0.0.12020-07-09T12:20:17.392+0800 I NETWORK [listener] waiting for connections on port 27017
-
--dbpath: 指定資料庫的存放路徑
-
--logpath: 指定日誌的存放路徑
-
--append: 或--logappend 設定日誌的寫入形式為追加模式
-
--fork: 或-fork 開啟新的程序執行mongodb服務
-
--f: 或-f 配置檔案路徑(可以將上述配置資訊寫入檔案然後通過該檔案中的引數進行載入啟動)
-
--auth: 以許可權認證的方式啟動,我們會在後邊的課程中學習該內容
1.3 檢視是否啟動成功
ps aux | grep mongod
四:MongoDB 後臺管理 Shell
如果你需要進入 mongodb 後臺管理,你需要先開啟 mongodb 裝目錄的下的 bin 目錄,然後執行 mongo 命令檔案。
MongoDB Shell 是 MongoDB 自帶的互動式 Javascript shell,用來對 MongoDB 進行操作和管理的互動式環境。
當你進入 mongoDB 後臺後,它預設會連結到 test 文件(資料庫):
$ cd /usr/local/mongodb4/bin $ ./mongo MongoDB shell version v4.2.8 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session {"id": UUID("2cfdafc4-dd56-4cfc-933a-187b887119b3")}MongoDB server version:4.2.8Welcome to the MongoDB shell.……
由於它是一個JavaScript shell,您可以執行一些簡單的算術運算:
>2+24>3+69
現在讓我們插入一些簡單的資料,並對插入的資料進行檢索:
> db.runoob.insert({x:10})WriteResult({"nInserted":1})> db.runoob.find(){"_id":ObjectId("5f069bdb4e02f8baf90f1184"),"x":10}>
第一個命令將數字 10 插入到 runoob 集合的 x 欄位中。
如果要停止 mongodb 可以使用以下命令:
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --shutdown
也可以在 mongo 的命令出口中實現:
>use admin switched to db admin > db.shutdownServer()
五. mongodb的簡單使用
開啟mongodb server的情況下,在進入mongo shell後,就可以做簡單的使用了
5.1 mongodb資料庫的命令
-
檢視當前的資料庫:db(沒有切換資料庫的情況下預設使用test資料庫)
-
檢視所有的資料庫:show dbs /show databases
-
切換資料庫:use db_name
-
db_name為show dbs後返回的資料庫名
-
-
刪除當前的資料庫:db.dropDatabase()
5.2 mongodb集合的命令
-
無需手動建立集合:向不存在的集合中第一次新增資料時,集合會自動被創建出來
-
手動建立集合:
-
db.createCollection(name,options)
-
db.createCollection("stu")
-
db.createCollection("sub", { capped : true, size : 10 } )
-
引數capped:預設值為false表示不設定上限,值為true表示設定上限
-
引數size:集合所佔用的位元組數。 當capped值為true時,需要指定此引數,表示上限大小,當文件達到上限時, 會將之前的資料覆蓋,單位為位元組
-
-
檢視集合:show collections
-
刪除集合:db.集合名稱.drop()
-
檢查集合是否設定上限: db.集合名.isCapped()
5.3 簡單練習
在mongo shell中輸入下列命令,檢視結果
show dbs
use test
show collections
db
db.stu.insert({'name':'郭靖', 'age':22})
show dbs
show collections
db.stu.find()
db.stu.drop()
show collections
db.dropDatabase()
show dbs
exit
5.3 mongodb中常見的資料型別(瞭解)
5.3.1 常見型別
-
Object ID: 文件ID/資料的ID,資料的主鍵
-
String: 字串,最常用,必須是有效的UTF-8
-
Boolean: 儲存一個布林值,true或false
-
Integer: 整數可以是32位或64位,這取決於伺服器
-
Double: 浮點數
-
Arrays: 陣列/列表
-
Object: mongodb中的一條資料/文件,即文件巢狀文件
-
Null: 儲存null值
-
Timestamp: 時間戳,表示從1970-1-1到現在的總秒數
-
Date: 儲存當前日期或時間的UNIX時間格式
5.3.2 注意點
-
每個文件都有一個屬性,為id,保證每個文件的唯一性,mongodb預設使用id作為主鍵
-
可以手動設定id的值,如果沒有提供,那麼MongoDB為每個文件提供了一個獨特的id, 型別為objectID
-
-
objectID是一個12位元組的十六進位制數,每個位元組兩位,一共是24位的字串:
-
前4個位元組為當前時間戳
-
接下來3個位元組的機器ID
-
接下來的2個位元組中MongoDB的服務程序id
-
最後3個位元組是簡單的增量值
-
1.1 什麼是mongodb
-
mongodb 是一個功能最豐富的NoSQL非關係資料庫。由 C++ 語言編寫。
-
mongodb 本身提供S端儲存資料,即server;也提供C端操作處理(如查詢等)資料,即client。