MongoDB (芒果)安装说明创建与插入数据
MongoDB (芒果)
一. 基礎(chǔ)概念
二. 關(guān)系型數(shù)據(jù)庫(kù) OR 非關(guān)系型數(shù)據(jù)庫(kù)
關(guān)系型數(shù)據(jù)庫(kù) :采用關(guān)系模型(二維表)來(lái)組織數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)庫(kù)
【1】常見(jiàn)關(guān)系型數(shù)據(jù)庫(kù):Oracle DB2 SQLServer MySql SQLite
【2】?jī)?yōu)缺點(diǎn)
優(yōu)點(diǎn): * 邏輯清晰,容易理解,結(jié)構(gòu)類似常見(jiàn)的表格* 使用sql語(yǔ)句操作,技術(shù)成熟,使用方便* 數(shù)據(jù)一致性高* 關(guān)系型數(shù)據(jù)庫(kù)比較成熟,復(fù)雜的數(shù)據(jù)操作較多缺點(diǎn): * 每次操作需要專門(mén)sql語(yǔ)句解析,降低了速度
* 關(guān)系型數(shù)據(jù)庫(kù)內(nèi)部往往進(jìn)行加鎖處理,也影響了處理速度
* 不能很好的處理海量數(shù)據(jù)并發(fā)請(qǐng)求的需要,讀寫(xiě)能力差
非關(guān)系型數(shù)據(jù)庫(kù) (NoSql–》Not only sql)
【1】 常見(jiàn)非關(guān)系型數(shù)據(jù)庫(kù)
【2】 優(yōu)缺點(diǎn)
優(yōu)點(diǎn): * 讀寫(xiě)速度快,可以更好應(yīng)對(duì)并發(fā)請(qǐng)求
* 使用靈活,容易擴(kuò)展
缺點(diǎn): * 沒(méi)有sql那樣同一的成熟的語(yǔ)句操作
* 技術(shù)成熟度較差,缺少?gòu)?fù)雜的數(shù)據(jù)操作
【3】 應(yīng)用場(chǎng)景
三. MongoDB數(shù)據(jù)庫(kù)
特點(diǎn)
【1】 非關(guān)系型數(shù)據(jù)庫(kù),是文檔型數(shù)據(jù)庫(kù)
【2】 開(kāi)源數(shù)據(jù)庫(kù),使用廣泛,更新較快
【3】 由c++編寫(xiě)的數(shù)據(jù)庫(kù)管理系統(tǒng)
【4】 支持豐富的存儲(chǔ)類型和數(shù)據(jù)操作
【5】 方便擴(kuò)展,部署,眾多語(yǔ)言提供了操作接口
MongoDB安裝
-
Linux : sudo apt-get install mongodb
-
Mac OS : brew install mongodb
-
Windows :www.mongodb.com 下載軟件安裝
Linux 安裝目錄
安裝位置:/var/lib/mongodb....配置文件:/etc/mongodb.conf命令集:/usr/bincookie :
環(huán)境變量 : 系統(tǒng)指定的查找路徑。當(dāng)加載一個(gè)文件時(shí)如果當(dāng)前目錄找不到會(huì)自動(dòng)從環(huán)境變量目錄查找
四. MongoDB 命令
mongod 配置mongodb基本信息
【1】 mongod -h 查看幫助信息
【2】 mongod --port 8888 設(shè)置端口號(hào)
【3】 mongod --dbpath [dir] 設(shè)置數(shù)據(jù)庫(kù)存儲(chǔ)路徑
mongo 進(jìn)入數(shù)據(jù)庫(kù) mongoshell 界面
【1】 mongo 進(jìn)入mongoshell界面,即可操作數(shù)據(jù)庫(kù)
【2】 quit() crtl-c 退出界面
五. MongoDB 數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)組織結(jié)構(gòu): 鍵值對(duì) --> 文檔 --> 集合 --> 數(shù)據(jù)庫(kù)
e.g.:
| 1 | Lily | 17 |
| 2 | Lucy | 18 |
| database | database | 數(shù)據(jù)庫(kù) |
| table | collection | 表/集合 |
| culumn | field | 字段/域 |
| row | document | 記錄/文檔 |
| index | index | 索引 |
六. 數(shù)據(jù)庫(kù)操作
創(chuàng)建數(shù)據(jù)庫(kù): use [database]
e.g. 創(chuàng)建一個(gè)stu數(shù)據(jù)庫(kù)
use stu
-
use實(shí)際為選擇使用哪個(gè)數(shù)據(jù)庫(kù),當(dāng)這個(gè)數(shù)據(jù)庫(kù)不存在時(shí)會(huì)自動(dòng)創(chuàng)建
-
使用use創(chuàng)建數(shù)據(jù)庫(kù)不會(huì)立即創(chuàng)建,而是需要插入數(shù)據(jù)時(shí)才真正被創(chuàng)建
查看系統(tǒng)中數(shù)據(jù)庫(kù): show dbs
數(shù)據(jù)庫(kù)命名規(guī)則
【1】 使用utf-8字符
【2】 不能含有: 空格 . / \ ‘\0’
【3】 不超過(guò)64字節(jié)
【4】 不要已有數(shù)據(jù)庫(kù)重名
全局變量db : 代表當(dāng)前正在使用的數(shù)據(jù)庫(kù)
- 如果不選擇任何數(shù)據(jù)庫(kù)則 db表示‘test’
刪除數(shù)據(jù)庫(kù): db.dropDatabase()
數(shù)據(jù)庫(kù)的備份和恢復(fù)
【1】 數(shù)據(jù)庫(kù)備份命令
mongodump -h [host] -d [database] -o [path]e.g. 備份當(dāng)前主機(jī)中stu數(shù)據(jù)庫(kù)到bak目錄下mongodump -h localhost -d stu -o ./bak【2】 數(shù)據(jù)庫(kù)恢復(fù)
mongorestore -h [host:port] -d [db] [bak_dir]e.g. 將stu數(shù)據(jù)庫(kù)恢復(fù)到當(dāng)前主機(jī)中student數(shù)據(jù)庫(kù)下mongorestore -h 127.0.0.1:27017 -d student bak/stu數(shù)據(jù)庫(kù)監(jiān)控
查看數(shù)據(jù)庫(kù)運(yùn)行狀態(tài): mongostat
command : 每秒mongo命令的執(zhí)行次數(shù)
flushes : 每秒的磁盤(pán)刷新頻率
vsize res:使用虛擬內(nèi)容和物理內(nèi)存情況
time:時(shí)間
監(jiān)控?cái)?shù)據(jù)庫(kù)中數(shù)據(jù)讀寫(xiě)情況: mongotop
| total | 每秒讀寫(xiě)時(shí)長(zhǎng) |
| read | 每秒讀時(shí)長(zhǎng) |
| write | 每秒寫(xiě)時(shí)長(zhǎng) |
七. 集合操作
創(chuàng)建集合
【1】 db.createCollection(collectionName)
e.g. 創(chuàng)建集合class1
db.createCollection(‘class1’)
【2】 插入數(shù)據(jù)時(shí),如果指定集合不存在會(huì)自動(dòng)創(chuàng)建
e.g. 如果class2不存在則自動(dòng)創(chuàng)建db.class2.insert({'name':'寶強(qiáng)','age':32})【3】 查看數(shù)據(jù)庫(kù)中集合: show collections
【4】 集合命名規(guī)則:
刪除集合: db.collection.drop()
e.g. 刪除class集合
db.class.drop()
集合的重命名 : db.collection.renameCollection(newname)
e.g. 將集合class重命名為class0
db.class.renameCollection(‘class0’)
八. 文檔
什么是文檔?
- 文檔是mongodb數(shù)據(jù)庫(kù)中基本的數(shù)據(jù)組織單元
- 文檔由多個(gè)鍵值對(duì)構(gòu)成,每個(gè)鍵值對(duì)表達(dá)一個(gè)數(shù)據(jù)項(xiàng)
- mongodb中文檔數(shù)據(jù)實(shí)際為bson數(shù)據(jù)格式
文檔鍵值對(duì)
特點(diǎn):
- 文檔中鍵值對(duì)是無(wú)序的
- 文檔中的鍵不能夠重復(fù)
- 文檔通過(guò)鍵取值
- 文檔的鍵為utf-8格式,不能有\(zhòng)0
鍵 : 表示文檔的數(shù)據(jù)域,即數(shù)據(jù)的信息含義
值 : 即數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)
數(shù)據(jù)類型支持 : 見(jiàn) 圖 mongo_type
String 字符串
Int 整型
Double 浮點(diǎn)型
Boolean 布爾類型 true false
ObjectId ID對(duì)象
- 在插入數(shù)據(jù)時(shí),如果不自己指定_id域則會(huì)自動(dòng)添加這個(gè)域,值為ObjectId數(shù)據(jù),用于作為文檔主鍵
e.g.:
“_id”:ObjectId(“5c95abfcc8c4cf7482cfbadd”)
集合中的文檔設(shè)計(jì)
【1】一個(gè)集合中的文檔盡量表達(dá)相同的數(shù)據(jù)內(nèi)容
【2】集合中文檔的層次嵌套不宜特別多,如果層次過(guò)多時(shí)考慮可否拆分為多個(gè)集合
【3】集合中文檔相互獨(dú)立,可以根據(jù)實(shí)際情況選擇不同的域結(jié)構(gòu)
九. 數(shù)據(jù)基本操作
插入文檔
【1】 插入單個(gè)文檔
命令: db.collection.insertOne(doc)
e.g. 向class0中插入一個(gè)文檔
db.class0.insertOne({‘name’:‘Lucy’,age:18,sex:‘w’})
- 數(shù)據(jù)操作時(shí),鍵可以不加引號(hào),默認(rèn)為utf-8字符串
- 可以自己添加_id域,但是_id域的值不能重復(fù)
【2】 插入多個(gè)文檔
命令:db.collection.insertMany([doc,...])e.g. 同時(shí)插入多條文檔 db.class0.insertMany([{name:'Abby',age:18,sex:'w'},{name:'Tom',age:17,sex:'m'}])【3】 一個(gè)綜合函數(shù)
命令: db.collection.insert()說(shuō)明:綜合insertOne,insertMany功能。官方不推薦【4】 save保存文檔
命令: db.collection.save()說(shuō)明: 使用方法同insert(),但是當(dāng)_id重復(fù)時(shí)會(huì)覆蓋原有文檔補(bǔ)充 :
獲取集合對(duì)象方法: db.getCollection(collectionName)作業(yè) :
總結(jié)
以上是生活随笔為你收集整理的MongoDB (芒果)安装说明创建与插入数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (七)SpringBoot+Spring
- 下一篇: Levko and Permutatio