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