基礎(chǔ)執(zhí)行命令
1.啟動(dòng)mongodb服務(wù)
sudo serice mongod start
2.配置文件路徑
配置文件在/etc/mongod.conf 默認(rèn)端口27017
3.停止,停止后輸入將不能啟動(dòng)shell
sudo service mongod stop
4.重置服務(wù)
sudo service mongod restart
5.啟動(dòng)mongodb客戶端
mongo
5.終端退出鏈接
exit或ctrl+c
6.查看當(dāng)前數(shù)據(jù)庫(kù)名稱
db
7.所有數(shù)據(jù)庫(kù)
show dbs
8.切換數(shù)據(jù)庫(kù)
use 數(shù)據(jù)庫(kù)名稱
9.查看當(dāng)前數(shù)據(jù)庫(kù)信息
db.stats()
10.數(shù)據(jù)庫(kù)刪除
db.dropDatabase()
2.集合
1.創(chuàng)建集合
db.createCollection(name,options)
name 是要?jiǎng)?chuàng)建的集合的名稱
options 是一個(gè)文檔,用于指定集合的配置
2.限制集合大小
db.createCollection("stu")
3.限制集合大小
????參數(shù)capped:默認(rèn)值為false表示不設(shè)置上限, 值為true ? ? 表示設(shè)置上限
? ?參數(shù)size:當(dāng)capped值為true時(shí),需要指定此參數(shù),表示 ? ?上限大小,當(dāng)文檔達(dá)到上限時(shí),會(huì)將之前的數(shù)據(jù)覆蓋, ? ? ?單位為字節(jié)
db.createCollection(
"sub",
{
capped : true,
size : 10,
max: 100,
}
)
4.查看數(shù)據(jù)庫(kù)集合
show collections
5.刪除集合
如果成功刪除選定集合,則 drop() 方法返回 true,否則返回 false
db.集合名稱.drop()
6.單條插入
db.集合名稱.insert({name:'王明',gender:1})
注意:插入文檔時(shí),如果不指定_id參數(shù),MongoDB會(huì)為文檔分配一個(gè)唯一的ObjectId
7.多條插入
db.集合名稱.insert(
[
{name:'王明',gender:1},
{name:'王玲玲',gender:0}
]
)
8.刪
db.collection.remove(
<query>,
{justOne: <boolean>,}
)
query :(可選)刪除的文檔的條件。
justOne : (可選)如果設(shè)為 true 或 1,則只刪除一個(gè)文檔。
9.刪除所有
db.集合名稱.remove(document)
10.只刪除1條,1表示是否只刪除一條為true的意思
db.集合名稱.remove(
document,1
)
db.集合名稱.remove(
document,
{justOne:true}
)
3.改
1.update() 方法
update() 方法用于更新已存在的文檔
db.集合名稱.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
}
)
query : update的查詢條件,類似sql update查詢內(nèi)where后面的。
update : update的對(duì)象和一些更新的操作符(如,inc...)等,也可以理解為sql update查詢內(nèi)set后面的
upsert : 可選,這個(gè)參數(shù)的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認(rèn)是false,不插入。
multi : 可選,mongodb 默認(rèn)是false,只更新找到的第一條記錄,如果這個(gè)參數(shù)true,就把按條件查出來(lái)多條記錄全部更新。
2.全新文檔更新
db.集合名稱.update(
{name:'xxxxx'},
{name:'張xxx'}
)
3.指定屬性更新,通過(guò)操作符$set
更新一條數(shù)據(jù)
db.stu.update(
{name:'李自成'},
{
$set:{name:'闖王李自成'}
}
)
更新多條數(shù)據(jù)
db.stu.update(
{name:'李自成'},
{
$set:{name:'闖王李自成'}
},
{multi:true}
)
2.save()方法
save()方法通過(guò)傳入的文檔來(lái)替換已有文檔,如果文檔的_id已經(jīng)存在則修改,如果文檔的_id不存在則添加
db.集合名稱.save(document)
4.查詢
1.find():查詢,返回所有滿足條件的數(shù)據(jù)
db.集合名稱.find({條件文檔})
2.findOne():查詢,只返回第一個(gè)
db.集合名稱.findOne({條件文檔})
3.查詢出姓名等于李某某的學(xué)生
db.集合名稱.find({name:'李某某'})
db.集合名稱.findOne({name:'李某某'})
比較運(yùn)算符
- 等于,默認(rèn)是等于判斷,沒(méi)有運(yùn)算符
- 小于\$lt
- 小于或等于\$lte
- 大于\$gt
- 大于或等于\$gte
- 不等于\$ne
例:查詢年齡大于或等于18的學(xué)生
db.集合名稱.find({age:{$gte:18}})
邏輯運(yùn)算符
例:查詢年齡大于或等于18,并且性別為1的學(xué)生
db.集合名稱.find(
{
age:{$gte:18},
gender:1
}
)
1.邏輯或:使用$or
例:查詢年齡大于18,或性別為0的學(xué)生
db.集合名稱.find(
{
$or:[
{age:{$gt:18}},
{gender:1}
]
}
)
2.and和or一起使用
例:查詢年齡大于18或性別為0的學(xué)生,并且學(xué)生的姓名為gj
db.集合名稱.find(
{
$or:[
{age:{$gte:18}},
{gender:1}
],
name:'gj'
}
)
3.范圍運(yùn)算符
使用"$in","$nin" 判斷是否在某個(gè)范圍內(nèi)
例:查詢年齡為18、28的學(xué)生
db.集合名稱.find(
{
age:{$in:[18,28]}
}
)
4.正則表達(dá)式查詢
使用//或$regex編寫(xiě)正則表達(dá)式
例:查詢姓李的同學(xué)
db.stu.find({name:/^李/}
)
或
db.stu.find(
{
name:{$regex:'^李'}
}
)
5.limit() 方法
讀取指定數(shù)量的數(shù)據(jù)記錄
db.集合名稱.find().limit(num)
6.skip() 方法
使用skip()方法來(lái)跳過(guò)指定數(shù)量的數(shù)據(jù),skip方法同樣接受一個(gè)數(shù)字參數(shù)作為跳過(guò)的記錄條數(shù)。
db.集合名稱.find().skip(num)
7.sort() 方法排序
sort()方法對(duì)數(shù)據(jù)進(jìn)行排序,sort() 方法可以通過(guò)參數(shù)指定排序的字段,并使用 1 和 -1 來(lái)指定排序的方式,其中 1 為升序排列,而 -1 是用于降序排列。
升序
db.集合名稱.find().sort({排序字段:1})
降序
db.集合名稱.find().sort({排序字段:-1})
根據(jù)多個(gè)字段排序:
例:先根據(jù)年齡做降序,再根據(jù)性別做升序
db.集合名稱.find().sort({age:-1,gender:1})
注意:skip(), limilt(), sort()三個(gè)放在一起執(zhí)行的時(shí)候,執(zhí)行的順序是先 sort(), 然后是 skip(),最后是顯示的 limit()。
8.distinct() 去重
db.集合名稱.distinct('去重字段',{條件})
例:查找年齡大于20的姓名(去重)
db.集合名稱.distinct('name',{age:{$gt:20}})
9.project投影
(可以指定想要返回的字段)
在查詢到的返回結(jié)果中,只選擇必要的字段,而不是選擇一個(gè)文檔的整個(gè)字段
例:參數(shù)為字段與值,值為1表示顯示,值為0不顯示
db.集合名稱.find({},{字段名稱:0,...})
10.count() 統(tǒng)計(jì)個(gè)數(shù)
db.集合名稱.count({條件})