1. 什么是MongoDB ?
1、MongoDB 是由C++語(yǔ)言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)。在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。
2、MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
3、MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成。MongoDB 文檔類似于 JSON 對(duì)象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。
下載,安裝
homebrew 官方地址 https://brew.sh/
在終端輸入以下語(yǔ)句
1.先安裝 homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2.接著安裝 mongodb
brew install mongodb
3.終端啟動(dòng)MongoDB數(shù)據(jù)庫(kù)
mongod —dbpath=數(shù)據(jù)庫(kù)地址
例如: mongod --dbpath=/Users/lanou/Desktop/nodejs/vue/user/database
4.再在終端中鍵入mongo(顯示版本信息什么就說(shuō)明安裝好了)
5.show dbs (查看所有數(shù)據(jù)庫(kù))
5.退出:exit退出,或者Ctrl+c
1.數(shù)據(jù)庫(kù)操作
(1) . 創(chuàng)建(切換)數(shù)據(jù)庫(kù)
use database_name :(database_name代表數(shù)據(jù)庫(kù)的名字)
注:如果數(shù)據(jù)庫(kù)不存在,則創(chuàng)建數(shù)據(jù)庫(kù),否則切換到指定數(shù)據(jù)庫(kù)
(2) . 查看當(dāng)前操作的數(shù)據(jù)庫(kù)
db 或 db.getName()
注:db代表的是當(dāng)前數(shù)據(jù)庫(kù) 也就是person這個(gè)數(shù)據(jù)庫(kù)
(3) . 查看所有數(shù)據(jù)庫(kù)
show dbs
(4) . 刪除數(shù)據(jù)庫(kù)
db.dropDatabase()
2.集合操作
(1)查看當(dāng)前數(shù)據(jù)庫(kù)里的所有的集合
show collections
(2)創(chuàng)建集合(collection)
使用 db.createCollection(collection_Name)方法
(3)刪除當(dāng)前數(shù)據(jù)庫(kù)中的集合(collection)
db.collection_Name.drop()
3.數(shù)據(jù)內(nèi)容操作 (現(xiàn)在創(chuàng)建了一個(gè)users數(shù)據(jù)庫(kù),有一個(gè)person集合)
(1) 使用insert()方法插入文檔
插入一條數(shù)據(jù)
db.person.insert({name:’zpx’,age:6}) 向person集合添加一個(gè){name:’zpx’,age:6}的數(shù)據(jù)
插入多條數(shù)據(jù)
db.person.insert([{name:’wangWu’,age:50},{name:’xiaoMing’,age:60}]) 向person集合添加多個(gè)[{name:’wangWu’,age:50},{name:’xiaoMing’,age:60}] 的Document
(2) 使用save()方法插入文檔
db.collection_name.save(document) collection_name集合的名字 document插入的文檔
注:如果不指定 _id 字段 save() 方法類似于 insert() 方法。如果指定 _id 字段,則會(huì)更新該 _id 的數(shù)據(jù)。
實(shí)例
db.person.save({name:”xiaoHong”,age:50})
db.person.save({_id:ObjectId(“562c9caf671c978b6596e825”),name:”xiaoHong”,age:10})
(3)修改數(shù)據(jù):通過(guò)id來(lái)修改 save方法
(4)更新
db.person.update({name:’liSi_update’}, {$set: {age:40}}) 將document數(shù)據(jù)中name是liSi_update 的數(shù)據(jù)的age修改為 40
注:如果有多條name是liSi的數(shù)據(jù)默認(rèn)只更新一條
加上{multi:true}就是更新所有name是liSi的數(shù)據(jù)
db.person.update({name:’liSi_update’}, {$set: {age:40}},{multi:true})
(5)刪除數(shù)據(jù)
db.person.remove({name:’fJianZhou’}) 默認(rèn)刪除worker集合里name是fJianZhou的所有
如果只想刪除一條加上{justOne:true}
db.person.remove({name:’fJianZhou’},{justOne:true})
查詢數(shù)據(jù)
(1)數(shù)據(jù)查詢
db.person.find()
(2)pretty()方法以格式化的方式來(lái)顯示所有文檔
db.person.find().pretty()
(3)findOne()方法查詢匹配結(jié)果的第一條數(shù)據(jù)
db.person.findOne()
(4)count統(tǒng)計(jì)查詢到的數(shù)據(jù)條數(shù)
db.person.find().count()
(5)limit(num) :限制查詢num條數(shù)據(jù)
db.person.find({$or:[{name:/李/},{name:/王/}]}).sort({age:-1}).limit(2)
(6)skip(num),跳過(guò)幾條
db.person.find().skip(2).limit(2);跳過(guò)兩條,limit查詢兩條
(7)排序查詢(排序查詢 1.正序。-1:倒序)數(shù)字不要加引號(hào),排序會(huì)有問(wèn)題
db.person.find().sort(age:1); 按照年齡排序
查詢條件操作符
(1)比較條件
條件:大于gt 小于lt 大于等于 gte 小于等于 lt 不等于 ne 等于 直接用冒號(hào)
db.person.find({age:{$gt:30}}) 查詢age 大于 30的數(shù)據(jù)
(2)邏輯條件 and or
并且關(guān)系
查詢數(shù)據(jù)名字是“王五”,并且年齡是33,并且關(guān)系直接寫在對(duì)象里面
db.person.find({name:"王五",age:33})
或者關(guān)系
查詢年齡等于48或者28
db.person.find({$or:[{age:48},{age:28}]})
(3)正則表達(dá)
查詢所有以“王作為開(kāi)頭的”的數(shù)據(jù)
db.person.find({name:/^王/})