mongoDB下載地址:mongodb:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.6-signed.msi
找到安裝目錄下的
bin目錄,復(fù)制路徑,添加到環(huán)境變量中在非系統(tǒng)盤(pán)創(chuàng)建空
mongoDB文件夾并創(chuàng)建空的日志文件夾以及創(chuàng)建空的數(shù)據(jù)庫(kù)文件夾
比如: D:\mongoDB -> 總數(shù)據(jù)庫(kù)文件夾
D:\mongoDB\db -> 空數(shù)據(jù)庫(kù)存儲(chǔ)文件夾
D:\mongoDB\log -> 空日志文件夾
- 把
mongod掛載成Windows上作為一個(gè)服務(wù)運(yùn)行:此電腦 > 鼠標(biāo)右鍵 > 管理 > 服務(wù)和應(yīng)用程序 > 服務(wù)
mongod -> mongod指令
--dbpath="D:\mongoDB\db" -> 指定數(shù)據(jù)庫(kù)存儲(chǔ)路徑
--logpath="D:\mongoDB\log\mongodb.log" -> 指定日志文件輸出路徑
--install -> 在windows上安裝mongod服務(wù)
--serviceName="MongoDB" -> 指定服務(wù)名稱
// 在CMD中運(yùn)行下方指令
// 64位操作系統(tǒng)命令:
mongod --dbpath="D:\mongoDB\db" --logpath="D:\mongoDB\log\mongodb.log" --install --serviceName="MongoDB Server"
// 32位操作系統(tǒng)或者安裝mongodb Vue(可視數(shù)據(jù)庫(kù))時(shí)的命令:
--storageEngine="mmapv1" -> 存儲(chǔ)引擎必須使用mmapv1 單個(gè)集合最大數(shù)據(jù)數(shù)為2G (老的儲(chǔ)存引擎)
mongod --storageEngine="mmapv1" --dbpath="D:\mongoDB\db" --logpath="D:\mongoDB\log\mongodb.log" --install --serviceName="MongoDB Server"
- 開(kāi)啟/關(guān)閉服務(wù): 在
CMD中運(yùn)行下方命令:重點(diǎn)
net start mongodb -> 開(kāi)啟服務(wù)
net stop mongodb -> 關(guān)閉服務(wù)
sc delete xxx -> 卸載服務(wù)(xxx可代表計(jì)算機(jī)中的任何服務(wù)名稱)
-
mongodb操作指令:重點(diǎn)
mongo -> 進(jìn)入數(shù)據(jù)庫(kù)管理模式
exit -> 退出數(shù)據(jù)庫(kù)管理模式
-
數(shù)據(jù)庫(kù)命令:
重點(diǎn)- 顯示所有的數(shù)據(jù)庫(kù)列表
show dbs -> 查看其服務(wù)器中所有數(shù)據(jù)庫(kù) - 創(chuàng)建數(shù)據(jù)庫(kù),進(jìn)入,切換數(shù)據(jù)庫(kù)
use xxx -> 如果該數(shù)據(jù)庫(kù)存在則進(jìn)入該數(shù)據(jù)庫(kù),如果不存在該數(shù)據(jù)庫(kù)則創(chuàng)建該數(shù)據(jù)庫(kù) - 查看當(dāng)前數(shù)據(jù)庫(kù)
db -> 查看當(dāng)前所在數(shù)據(jù)庫(kù)名稱 - 刪除數(shù)據(jù)庫(kù): 確保db當(dāng)前指向在當(dāng)前需要?jiǎng)h除的數(shù)據(jù)庫(kù)下
db.dropDatabase()
- 顯示所有的數(shù)據(jù)庫(kù)列表
-
集合命令:
重點(diǎn)- 顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有集合
show collections - 在數(shù)據(jù)庫(kù)下創(chuàng)建一個(gè)集合并插入一條數(shù)據(jù)
[user] -> 數(shù)據(jù)集合名(mysql中的表)
db.user.insert(json) - 刪除集合
[user] -> 數(shù)據(jù)集合名(mysql中的表)
db.user.drop()
- 顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有集合
-
文檔(數(shù)據(jù)的操作)命令:
重點(diǎn)-
新增數(shù)據(jù)
[user] -> 數(shù)據(jù)集合名(mysql中的表)
db.user.insert(json || bson) -> 推薦使用該方法
例如:db.user.insert({ "key": "value" })- 單條添加數(shù)據(jù)時(shí)
db.user.insertOne({ "key": "value" }) -> 同上方添加方法 - 批量添加數(shù)據(jù)時(shí)
db.user.insertMany([數(shù)組數(shù)據(jù)]) -> 推薦使用該方法
例如:db.user.insertMany([ { key: value }, { key: value } ])
db.user.save(json || bson)
例如:db.user.save({ "key": "value" })// insert和save的區(qū)別: .insert : 單純的向集合插入一條數(shù)據(jù) -> 推薦使用該方法 .save : 向數(shù)據(jù)庫(kù)中添加一條數(shù)據(jù),如果該數(shù)據(jù)已存在則更新該條數(shù)據(jù)
- 單條添加數(shù)據(jù)時(shí)
-
查詢數(shù)據(jù)
[user] -> 數(shù)據(jù)集合名(mysql中的表)- 查找當(dāng)前集合中的所有數(shù)據(jù)
db.user.find() - 查找符合條件的所有數(shù)據(jù)
db.user.find({ 條件 }) - 查找符合條件的第一條數(shù)據(jù): 不常用
db.user.findOne({ 查詢條件 }) - 格式化查詢出來(lái)的數(shù)據(jù): 適用于CMD窗口
db.user.find().pretty()
- 查找當(dāng)前集合中的所有數(shù)據(jù)
-
修改數(shù)據(jù)
[user] -> 數(shù)據(jù)集合名(mysql中的表)
db.user.update({ 查詢數(shù)據(jù)的條件,如: id: 1 }, { 修改的數(shù)據(jù),如: age: 55 }) -> 不加$set則修改整條數(shù)據(jù) 查詢id為1的這一條數(shù)據(jù)修改其age的值為55 db.user.update({ 查詢數(shù)據(jù)的條件,如: id: 1 }, { $set: { age: 999 } }) -> 加了$set, 則修改其中的部分?jǐn)?shù)據(jù)修改數(shù)組
查詢id為1的這一條數(shù)據(jù)并向該數(shù)據(jù)中的news數(shù)組中添加一條新數(shù)據(jù),如該數(shù)據(jù)存在則不添加,如數(shù)據(jù)不存在則添加 -> $push則直接添加并不會(huì)查找是否存在該元素
db.user.update({ 查詢數(shù)據(jù)的條件,如: id: 1 }, { $addToSet: { news: { title: '123465', detail: '123' } } }) -> $addToSet, 則表示向數(shù)組中添加數(shù)據(jù)
統(tǒng)一給該集合中所有的文檔添加某個(gè)參數(shù):works
db.user.bulkWrite([{ updateMany:{filter:{}, update:{ $set:{ works: [] } }, upsert:1} }]) 刪除數(shù)據(jù)
db.user.remove({}) -> 刪除當(dāng)前集合中的所有數(shù)據(jù)
db.user.remove({ 條件對(duì)象,如: age: 18 }) -> 刪除當(dāng)前集合中的指定的數(shù)據(jù),刪除當(dāng)前集合下的所有age等于18的
-
-
文檔查找高級(jí)命令
[user] -> 數(shù)據(jù)集合名(mysql中的表)- 查找指定數(shù)據(jù)
db.user.find({ sex: '女' }) -> 查找user下的所有數(shù)據(jù): 查找集合中為女性的用戶 - 查找范圍
$lte -> 小于等于 $lt -> 小于 $gte -> 大于等于 $gt -> 大于 db.user.find({ age: { $lte: 24, $gte: 21 }, sex: '男' }).pretty() -> 查找user下的所有數(shù)據(jù): 年齡小于等于24歲大于等于21歲的男性用戶 - 非 -> 很少用到,一般用a項(xiàng)
db.user.find({ sex: { $ne: '男' } }).pretty() -> 查找user下的所有數(shù)據(jù): 非男性用戶 - 取模運(yùn)算查找 -> 很少用到
db.user.find({ age: { $mod: [2, 0] }}).pretty() -> 查找user下的所有數(shù)據(jù): 年齡 age % 2 === 0 的用戶(偶數(shù)) - 枚舉查找(批量:范圍查找)
db.user.find({ age: { $in: [18,20,21] }}).pretty() -> 查找user下的所有數(shù)據(jù): 年齡為18/20/21的所有用戶 非 -> 很少用到 db.user.find({ age: { $nin: [18,20,21] }}).pretty() -> 查找user下的所有數(shù)據(jù): 年齡不為18/20/21的所有用戶 - 查找數(shù)據(jù)下的某個(gè)屬性,數(shù)組的個(gè)數(shù)
db.user.find({ works: { $size: 0 } }) -> 查找user下的所有數(shù)據(jù): works數(shù)組length為0的所有用戶 - 查找數(shù)據(jù)下的某個(gè)屬性是否存在
db.user.find({ age: { $exists: true } }) -> 查找user下的所有數(shù)據(jù): age屬性存在的用戶 - 多條件查詢:或
db.user.find({ $or: [{ age: 20 }, { sex: '男' }] }) -> 查找user下的所有數(shù)據(jù): age=20或者sex=男 的所有符合其中一項(xiàng)條件的用戶 - 模糊查詢
db.user.find({ name: /小/imxg }) -> 查找user下的所有數(shù)據(jù): name中帶有“小”字的所有數(shù)據(jù)
- 查找指定數(shù)據(jù)
-
文檔其他命令
[user] -> 數(shù)據(jù)集合名(mysql中的表)- 排序
1 -> 升序排列 -1 -> 降序排列 db.user.find().sort({ fraction: -1, age: 1 }) -> 查找user下的所有數(shù)據(jù): fraction降序排列并且age升序排列 - 限定輸出多少條數(shù)據(jù)
db.user.find().limit(3) -> 查找user下的所有數(shù)據(jù): 限定輸出3條數(shù)據(jù) - 限定輸出多少條數(shù)據(jù)
可做分頁(yè)
db.user.find().limit(3).skip(3) -> 查找user下的所有數(shù)據(jù): 限定輸出3條數(shù)據(jù)并跳過(guò)前三條數(shù)據(jù) - 查看輸出數(shù)據(jù)條數(shù)
db.user.find().count() -> 查找user下的所有數(shù)據(jù): 查看輸出數(shù)據(jù)條數(shù)
- 排序