2.3 常用命令
2.3.1 選擇和創(chuàng)建數(shù)據(jù)庫(kù)
選擇和創(chuàng)建數(shù)據(jù)庫(kù)的語(yǔ)法格式:
use 數(shù)據(jù)庫(kù)名稱(chēng)
如果數(shù)據(jù)庫(kù)存在則選擇該數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)不存在則自動(dòng)創(chuàng)建。
以下語(yǔ)句創(chuàng)建commentdb數(shù)據(jù)庫(kù):
use commentdb
查看數(shù)據(jù)庫(kù):
show dbs
查看集合,需要先選擇數(shù)據(jù)庫(kù)之后,才能查看該數(shù)據(jù)庫(kù)的集合:
show collections
2.3.2 插入與查詢文檔
選擇數(shù)據(jù)庫(kù)后,使用集合來(lái)對(duì)文檔進(jìn)行操作,插入文檔語(yǔ)法格式:
db.集合名稱(chēng).insert(數(shù)據(jù));
插入以下測(cè)試數(shù)據(jù):
db.comment.insert({content:"十次方課程",userid:"1011"})
查詢集合的語(yǔ)法格式:
db.集合名稱(chēng).find()
查詢spit集合的所有文檔,輸入以下命令:
db.comment.find()
發(fā)現(xiàn)文檔會(huì)有一個(gè)叫_id的字段,這個(gè)相當(dāng)于我們?cè)瓉?lái)關(guān)系數(shù)據(jù)庫(kù)中表的主鍵,當(dāng)你在插入文檔記錄時(shí)沒(méi)有指定該字段,MongoDB會(huì)自動(dòng)創(chuàng)建,其類(lèi)型是ObjectID類(lèi)型。如果我們?cè)诓迦胛臋n記錄時(shí)指定該字段也可以,其類(lèi)型可以是ObjectID類(lèi)型,也可以是MongoDB支持的任意類(lèi)型。
輸入以下測(cè)試語(yǔ)句:
db.comment.insert({_id:"1",content:"到底為啥出錯(cuò)",userid:"1012",thumbup:2020});
db.comment.insert({_id:"2",content:"加班到半夜",userid:"1013",thumbup:1023});
db.comment.insert({_id:"3",content:"手機(jī)流量超了咋辦",userid:"1013",thumbup:111});
db.comment.insert({_id:"4",content:"堅(jiān)持就是勝利",userid:"1014",thumbup:1223});
按一定條件來(lái)查詢,比如查詢userid為1013的記錄,只要在find()中添加參數(shù)即可,參數(shù)也是json格式,如下:
db.comment.find({userid:'1013'})
只需要返回符合條件的第一條數(shù)據(jù),我們可以使用findOne命令來(lái)實(shí)現(xiàn):
db.comment.findOne({userid:'1013'})
返回指定條數(shù)的記錄,可以在find方法后調(diào)用limit來(lái)返回結(jié)果,例如:
db.comment.find().limit(2)
2.3.3 修改與刪除文檔
修改文檔的語(yǔ)法結(jié)構(gòu):
db.集合名稱(chēng).update(條件,修改后的數(shù)據(jù))
修改_id為1的記錄,點(diǎn)贊數(shù)為1000,輸入以下語(yǔ)句:
db.comment.update({_id:"1"},{thumbup:1000})
執(zhí)行后發(fā)現(xiàn),這條文檔除了thumbup字段其它字段都不見(jiàn)了。
為了解決這個(gè)問(wèn)題,我們需要使用修改器$set來(lái)實(shí)現(xiàn),命令如下:
db.comment.update({_id:"2"},{$set:{thumbup:2000}})
刪除文檔的語(yǔ)法結(jié)構(gòu):
db.集合名稱(chēng).remove(條件)
以下語(yǔ)句可以將數(shù)據(jù)全部刪除,慎用~
db.comment.remove({})
刪除條件可以放到大括號(hào)中,例如刪除thumbup為1000的數(shù)據(jù),輸入以下語(yǔ)句:
db.comment.remove({thumbup:1000})
2.3.4 統(tǒng)計(jì)條數(shù)
統(tǒng)計(jì)記錄條件使用count()方法。以下語(yǔ)句統(tǒng)計(jì)spit集合的記錄數(shù):
db.comment.count()
按條件統(tǒng)計(jì) ,例如統(tǒng)計(jì)userid為1013的記錄條數(shù):
db.comment.count({userid:"1013"})
2.3.5 模糊查詢
MongoDB的模糊查詢是通過(guò)正則表達(dá)式的方式實(shí)現(xiàn)的。格式為:
/模糊查詢字符串/
查詢?cè)u(píng)論內(nèi)容包含“流量”的所有文檔,代碼如下:
db.comment.find({content:/流量/})
查詢?cè)u(píng)論內(nèi)容中以“加班”開(kāi)頭的,代碼如下:
db.comment.find({content:/^加班/})
以$結(jié)尾查詢
/**$/
2.3.6 大于 小于 不等于
<, <=, >, >= 這個(gè)操作符也是很常用的,格式如下:
db.集合名稱(chēng).find({ "field" : { $gt: value }}) // 大于: field > value
db.集合名稱(chēng).find({ "field" : { $lt: value }}) // 小于: field < value
db.集合名稱(chēng).find({ "field" : { $gte: value }}) // 大于等于: field >= value
db.集合名稱(chēng).find({ "field" : { $lte: value }}) // 小于等于: field <= value
db.集合名稱(chēng).find({ "field" : { $ne: value }}) // 不等于: field != value
查詢?cè)u(píng)論點(diǎn)贊數(shù)大于1000的記錄:
db.comment.find({thumbup:{$gt:1000}})
2.3.7 包含與不包含
包含使用$in操作符
查詢?cè)u(píng)論集合中userid字段包含1013和1014的文檔:
db.comment.find({userid:{$in:["1013","1014"]}})
不包含使用$nin操作符
查詢?cè)u(píng)論集合中userid字段不包含1013和1014的文檔:
db.comment.find({userid:{$nin:["1013","1014"]}})
2.3.8 條件連接
我們?nèi)绻枰樵兺瑫r(shí)滿足兩個(gè)以上條件,需要使用$and操作符將條件進(jìn)行關(guān)聯(lián)(相當(dāng)于SQL的and)。格式為:
$and:[ {條件},{條件},{條件} ]
查詢?cè)u(píng)論集合中thumbup大于等于1000 并且小于2000的文檔:
db.comment.find({$and:[ {thumbup:{$gte:1000}} ,{thumbup:{$lt:2000} }]})
如果兩個(gè)以上條件之間是或者的關(guān)系,我們使用操作符進(jìn)行關(guān)聯(lián),與前面and的使用方式相同,格式為:
$or:[ {條件},{條件},{條件} ]
查詢?cè)u(píng)論集合中userid為1013,或者點(diǎn)贊數(shù)小于2000的文檔記錄:
db.comment.find({$or:[ {userid:"1013"} ,{thumbup:{$lt:2000} }]})
2.3.9 列值增長(zhǎng)
對(duì)某列值在原有值的基礎(chǔ)上進(jìn)行增加或減少,可以使用$inc運(yùn)算符:
db.comment.update({_id:"2"},{$inc:{thumbup:1}})