簡(jiǎn)介(https://www.mongodb.com/)
-
MongoDB
是為了快速開(kāi)發(fā)互聯(lián)網(wǎng)Web
應(yīng)用而設(shè)計(jì)的數(shù)據(jù)庫(kù)系統(tǒng)峰锁; -
MongoDB
的設(shè)計(jì)目標(biāo)是極簡(jiǎn)氮发、靈活盆犁、作為Web
應(yīng)用棧的一部分肚邢; -
MongoDB
的數(shù)據(jù)模型是面向文檔的,所謂文檔是一種類(lèi)似于JSON
的結(jié)構(gòu)摊溶,簡(jiǎn)單理解MongoDB
這個(gè)數(shù)據(jù)庫(kù)中存的各種各樣的JSON
(BSON
爬骤,比普通的JSON的功能要更加的強(qiáng)大); -
MongoDB
是一個(gè)NoSQL
(Not Only SQL)的數(shù)據(jù)庫(kù)(非關(guān)系型數(shù)據(jù)庫(kù))莫换; -
MongoDB
數(shù)據(jù)庫(kù)使用的是javaScript
進(jìn)行操作的霞玄,在MongoDB
含有一個(gè)對(duì)ES
標(biāo)準(zhǔn)實(shí)現(xiàn)的引擎骤铃,在MongoDB
中所有ES
中的語(yǔ)法中都可以使用。
安裝及啟動(dòng)
安裝
-
下載
- 下載地址:https://www.mongodb.org/dl/win32/
- 偶數(shù)版本為穩(wěn)定版坷剧,奇數(shù)版本為開(kāi)發(fā)版
- 3.2版本后不支持32位系統(tǒng)
安裝
-
配置環(huán)境變量
C:\Program Files\MongoDB\Server\3.4\bin
-
在
c
盤(pán)根目錄- 創(chuàng)建一個(gè)文件夾
data
- 在
data
中創(chuàng)建一個(gè)文件夾db
- 創(chuàng)建一個(gè)文件夾
啟動(dòng)
基本操作
操作 | 命令 |
---|---|
啟動(dòng)服務(wù)器 | mongod --dbpath 路徑 --port 端口號(hào) |
啟動(dòng)客戶端 | mongo |
手動(dòng)啟動(dòng)
-
打開(kāi)
cmd
命令行窗口輸入
mongod
啟動(dòng)mongodb
服務(wù)器劲厌。-
安裝32位注意:
啟動(dòng)服務(wù)器時(shí),需要輸入如下內(nèi)容:
mongod --storageEngine=mmapv1
- 該
cmd
窗口不可關(guān)閉
-
-
再打開(kāi)一個(gè)
cmd
窗口輸入
mongo
連接mongodb
(啟動(dòng)客戶端)听隐,出現(xiàn)>
,則啟動(dòng)成功哄啄。
后臺(tái)啟動(dòng)
? 將MongoDB
設(shè)置為系統(tǒng)服務(wù)雅任,可以自動(dòng)在后臺(tái)啟動(dòng),不需要每次都手動(dòng)啟動(dòng)咨跌。
在
c
盤(pán)根目錄創(chuàng)建data
沪么,并在在data
下創(chuàng)建db
和log
文件夾-
在
bin
所在目錄C:\Program Files\MongoDB\Server\3.4
下添加一個(gè)配置文件mongod.cfg
systemLog: destination: file path: c:\data\log\mongod.log storage: dbPath: c:\data\db
以管理員的身份打開(kāi)命令行窗口
-
執(zhí)行如下的命令
sc.exe create MongoDB binPath= "\"mongod的bin目錄\mongod.exe\" --service --config=\"mongo的安裝目錄\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
例如:
sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
啟動(dòng)
mongodb
服務(wù)-
如果啟動(dòng)失敗,證明上邊的操作有誤:
- 在控制臺(tái)輸入
sc.exe delete MongoDB
刪除之前配置的服務(wù) - 重復(fù)上述1-5步驟
- 在控制臺(tái)輸入
-
錯(cuò)誤碼1053解決方法:
-
cmd
刪除之前配置的服務(wù)
sc.exe delete MongoDB
-
cmd
輸入
"C:/Program Files/MongoDB/Server/3.4/bin/mongod.exe" --bind_ip 127.0.0.1 --logpath "c:/data/log/mongod.log" --logappend --dbpath "c:/data" --directoryperdb --serviceName MongoDB --install
-
cmd
啟動(dòng)服務(wù)
net start MongoDB
-
安裝可視化管理工具
? 下載地址:https://www.mongodbmanager.com/download
CRUD操作
完整操作詳見(jiàn):https://docs.mongodb.com/manual/reference/operator/
基本操作
操作 | 命令 |
---|---|
進(jìn)入指定的數(shù)據(jù)庫(kù) | use 數(shù)據(jù)庫(kù) |
顯示所有的數(shù)據(jù)庫(kù) | show dbs |
顯示數(shù)據(jù)庫(kù)中所有的集合 | show collections |
顯示當(dāng)前所在的數(shù)據(jù)庫(kù) | db |
備注:
- 當(dāng)我們創(chuàng)建文檔時(shí)锌半,如果文檔所在的集合或數(shù)據(jù)庫(kù)不存在會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)和集合禽车。
插入文檔
操作 | 命令 | 備注 |
---|---|---|
向集合中插入一個(gè)或多個(gè)文檔 | db.<collection>.insert() | 傳入對(duì)象或數(shù)組 |
向集合中插入一個(gè)文檔 | db.<collection>.insertOne() | 傳入對(duì)象 |
向集合中插入多個(gè)文檔 | db.<collection>.insertMany() | 傳入數(shù)組 |
備注:
- 當(dāng)向幾何中插入文檔時(shí),如果沒(méi)有給文檔指定
_id
屬性刊殉,則數(shù)據(jù)庫(kù)會(huì)自動(dòng)為文檔添加_id
屬性殉摔,該屬性用來(lái)作為文檔的唯一標(biāo)識(shí)(根據(jù)時(shí)間戳及機(jī)器碼生成,確保唯一) -
<collection>
表示集合名记焊,下同
查詢(xún)文檔
操作 | 命令 | 備注 |
---|---|---|
查詢(xún)所有符合條件的文檔 | db.<collection>.find() | 接收一個(gè)對(duì)象作為參數(shù):<br />{} 表示查詢(xún)集合中所有的文檔<br />{屬性:值} 查詢(xún)屬性是指定值的文檔<br />返回的是一個(gè)數(shù)組 |
查詢(xún)第一個(gè)符合條件的文檔 | db.<collection>.findOne() | 返回的是一個(gè)對(duì)象 |
獲取查詢(xún)結(jié)果的數(shù)量 | db.<collection>.find().count() | 返回?cái)?shù)值 |
設(shè)置顯示數(shù)據(jù)上限 | db.<collection>.find().limit() | |
跳過(guò)指定數(shù)量數(shù)據(jù) | db.<collection>.find().skip() | |
指定文檔排序規(guī)則 | db.<collection>.find().sort() | 需要傳遞對(duì)象來(lái)指定排序規(guī)則:<br />1表示升序<br />-1表示降序 |
設(shè)置查詢(xún)結(jié)果的投影 | db.<collection>.find({},{attr:1,_id:0}) | 在第二個(gè)參數(shù)位置設(shè)置查詢(xún)結(jié)果:<br />1表示顯示<br />0表示不顯示 |
備注:
skip()
和limit()
書(shū)寫(xiě)先后順序?qū)Y(jié)果無(wú)影響(先執(zhí)行skip()
后執(zhí)行limit()
)逸月。
查詢(xún)條件
功能 | 命令 | 例子 |
---|---|---|
通過(guò)內(nèi)嵌文檔對(duì)文檔進(jìn)行查詢(xún) | {“文檔名.文檔名”:值} | db.mans.find({"hobby.movies":"love"}) |
查詢(xún)大于條件 | $gt | db.mans.find({age:{$gt:20}}) |
查詢(xún)小于條件 | $lt | db.mans.find({age:{$lt:20}}) |
查詢(xún)大于等于條件 | $gte | db.mans.find({age:{$gte:20}}) |
查詢(xún)小于等于條件 | $lte | db.mans.find({age:{$lte:20}}) |
修改文檔
操作 | 命令 | 備注 |
---|---|---|
修改、替換集合中的一個(gè)或多個(gè)文檔 | db.<collection>.update(查詢(xún)條件遍膜,新對(duì)象碗硬,配置項(xiàng)) | 默認(rèn)情況下會(huì)使用新對(duì)象來(lái)替換舊對(duì)象<br />需要使用修改操作符修改指定屬性<br />默認(rèn)只會(huì)修改一個(gè),第三個(gè)參數(shù)對(duì)象中muti 屬性值改為true 則變?yōu)樾薷亩鄠€(gè) |
修改集合中的一個(gè)文檔 | db.<collection>.updateOne() | 只會(huì)修改一個(gè) |
修改集合中的多個(gè)文檔 | db.<collection>.updateMany() | 只會(huì)修改多個(gè) |
替換集合中的一個(gè)文檔 | db.<collection>.replaceOne() |
修改操作符
功能 | 操作符 | 例子 |
---|---|---|
修改文檔中指定屬性 | $set | db.mans.update({name: 'Tom'}瓢颅,{$set: {age:23}}) |
刪除文檔中指定屬性 | $unset | db.mans.update({name: 'Tom'}恩尾,{$unset: {age:23}}) |
數(shù)組添加一個(gè)新元素 | $push | db.mans.update({name: 'Tom'},{$push:{"hobby.movies":"love"}}) |
數(shù)組添加一個(gè)新元素(已存在則不會(huì)添加) | $addToSet | db.mans.update({name: 'Tom'}挽懦,{$addToSet:{"hobby.movies":"love"}}) |
刪除文檔
操作 | 命令 | 備注 |
---|---|---|
刪除集合中的一個(gè)或多個(gè)文檔 | db.<collection>.remove(查詢(xún)條件翰意,配置項(xiàng)) | 默認(rèn)刪除多個(gè),第二個(gè)參數(shù)傳入true 則變?yōu)橹粍h除一個(gè)<br />可以根據(jù)條件刪除文檔信柿,傳遞條件方式與find() 相同 |
刪除集合中的一個(gè)文檔 | db.<collection>.deleteOne() | 刪除一個(gè) |
刪除集合中的多個(gè)文檔 | db.<collection>.deleteMany() | 刪除多個(gè) |
清空一個(gè)集合 | db.<collection>.remove({}) | 刪除所有猎物,性能略差 |
刪除一個(gè)集合 | db.<collection>.drop() | |
刪除一個(gè)數(shù)據(jù)庫(kù) | db.dropDatabase() |
備注:
一般會(huì)在數(shù)據(jù)庫(kù)的數(shù)據(jù)中添加一個(gè)字段,用來(lái)表示數(shù)據(jù)是否被刪除(0為未刪除角塑,1為刪除)蔫磨,很少真正將數(shù)據(jù)刪除。