mongodb指令

1十办、 數(shù)據(jù)庫(kù)基礎(chǔ)命令

use mydb(建立數(shù)據(jù)庫(kù)):use不僅可以進(jìn)入一個(gè)數(shù)據(jù)庫(kù)仓犬,如果你敲入的庫(kù)不存在嗅绰,它還可以幫你建立一個(gè)庫(kù)。但是在沒(méi)有集合前搀继,它還是默認(rèn)為空窘面。

db.mydb.insert( ):新建數(shù)據(jù)集合和插入文件(數(shù)據(jù)),當(dāng)集合沒(méi)有時(shí)叽躯,這時(shí)候就可以新建一個(gè)集合财边,并向里邊插入數(shù)據(jù)。db.user.insert({name: "winerss"})

db.mydb.find( ):查詢所有數(shù)據(jù)点骑,這條命令會(huì)列出集合下的所有數(shù)據(jù)酣难,可以看到MongoDB是自動(dòng)給我們加入了索引值的。db.mydb.find()

db.mydb.findOne( ):查詢第一個(gè)文件數(shù)據(jù)黑滴,這里需要注意的憨募,所有MongoDB的組合單詞都使用首字母小寫(xiě)的駝峰式寫(xiě)法。

db.mydb.update({查詢},{修改}):修改文件數(shù)據(jù)袁辈,第一個(gè)是查詢條件菜谣,第二個(gè)是要修改成的值。這里注意的是可以多加文件數(shù)據(jù)項(xiàng)的db.mydb.update({"name":"winerss"},{"name":"winerss","age":"18"})晚缩。

db.mydb.remove(條件):刪除文件數(shù)據(jù)尾膊,注意的是要跟一個(gè)條件。db.mydb.remove({“name”:”winerss”})

db.mydb.drop( ):刪除整個(gè)集合荞彼,這個(gè)在實(shí)際工作中一定要謹(jǐn)慎使用冈敛,如果是程序,一定要二次確認(rèn)

db.dropDatabase( ):刪除整個(gè)數(shù)據(jù)庫(kù)卿泽,在刪除庫(kù)時(shí)莺债,一定要先進(jìn)入數(shù)據(jù)庫(kù)滋觉,然后再刪除。實(shí)際工作中這個(gè)基本不用齐邦,實(shí)際工作可定需要保留數(shù)據(jù)和痕跡的椎侠。

2、 批量插入

批量數(shù)據(jù)插入是以數(shù)組的方式進(jìn)行的: db.mydb.insert( [ {name: 'A'}, {name: 'B'} ] )

3措拇、update數(shù)據(jù)

db.mydb.update( {name: 'winerss'} , {name: '小明'} )

$set修改器:??用來(lái)修改一個(gè)指定的鍵值(key)我纪。假如現(xiàn)在的數(shù)據(jù)為{name: 'winerss'}

db.mydb.update( {name: 'winerss'} , { ‘$set’: {name: 'A', sex: '男'} } )? 字段并沒(méi)有sex,這時(shí)會(huì)添加sex字段丐吓,現(xiàn)在的數(shù)據(jù)為{name: 'A', sex:'男'}

$unset修改器:??它的作用其實(shí)就是刪除一個(gè)key值和鍵,?假如現(xiàn)在的數(shù)據(jù)為{name: 'A', sex: '男}

db.mydb.update( {name: 'A'} , { ‘$unset’: {sex: ''} } ) 現(xiàn)在的數(shù)據(jù)為{name: 'A'}

$inc對(duì)數(shù)字進(jìn)行計(jì)算:?它是對(duì)value值的修改浅悉,但是修改的必須是數(shù)字,字符串是不起效果的?假如現(xiàn)在的數(shù)據(jù)為{name: 'A', age:18}

db.mydb.update( {name: 'A'} , { ‘$inc’: {age: -2'} } )?現(xiàn)在的數(shù)據(jù)為{name: 'A', age:16}

multi選項(xiàng)?:?

現(xiàn)在我要給多條數(shù)據(jù)添加他們的技能券犁,執(zhí)行db.mydb.update({},{$set:{skills:[]}})后發(fā)現(xiàn)只有第一條添加了技能字段术健,

db.mydb.update({},{$set:{skills:[]}},{multi:true})這時(shí)候每個(gè)數(shù)據(jù)都發(fā)生了改變,multi是有ture和false兩個(gè)值粘衬,true代表全部修改荞估,false代表只修改一個(gè)(默認(rèn)值)

upsert選項(xiàng):?upsert是在找不到值的情況下,直接插入這條數(shù)據(jù)

db.mydb.update({name:'D'},{$set:{age:20}},{upsert:true})

?$push 追加數(shù)組/內(nèi)嵌文檔值

操作前數(shù)據(jù):{name: 'A', inserset: [ ] } ,? db.mydb.update({name:'A'},{$push:{interest:'mongodb'}}), 現(xiàn)在數(shù)據(jù){name: 'A', inserset: ['mongodb'] }

$net查找是否存在

它主要的作用是稚新,檢查一個(gè)值是否存在勘伺,如果不存在再執(zhí)行操作,存在就不執(zhí)行

db.mydb.update({name:'A',"interest":{$ne:'mysql'}},{$push:{interest:'mysql'}})

$addToSet升級(jí)版的$ne

它是$ne的升級(jí)版本(查找是否存在褂删,不存在就push上去)飞醉,操作起來(lái)更直觀和方便,所以再工作中這個(gè)要比$en用的多

db.mydb.update({name:"A"},{$addToSet:{interest:"books"}})

$each批量追加

它可以傳入一個(gè)數(shù)組屯阀,一次增加多個(gè)值進(jìn)去缅帘,相當(dāng)于批量操作,性能同樣比循環(huán)操作要好很多蹲盘,這個(gè)是需要我們注意的股毫,工作中也要先組合成數(shù)組,然后用批量的形式進(jìn)行操作召衔。

var skills=["javascript","Code"];

db.mydb.update({name:"A"},{$addToSet:{interest:{$each:skills}}})

$pop刪除數(shù)組值

只刪除一次铃诬,并不是刪除所有數(shù)組中的值。而且它有兩個(gè)選項(xiàng)苍凛,1:從數(shù)組末端進(jìn)行刪除和-1:從數(shù)組開(kāi)端進(jìn)行刪除

db.mydb.update({name:'xiaoWang'},{$pop:{interest:1}})

數(shù)組定位修改

有時(shí)候只知道修改數(shù)組的第幾位趣席,但并不知道是什么,這時(shí)候我們可以使用interest.int 的形式

db.mydb.update({name:'A'},{$set:{"interest.2":"Code"}})

4醇蝴、查詢:find的不等修飾符

簡(jiǎn)單查找

db.mydb.find({name: "A"})

篩選字段

?db.mydb.find({name: 'A'}, {name: true, sex: true,? _id: false}) 當(dāng)然這里的false和true宣肚,也可以用0和1表示。表示顯示的字段

?不等修飾符

小于($lt):英文全稱less-than

小于等于($lte):英文全稱less-than-equal

大于($gt):英文全稱greater-than

大于等于($gte):英文全稱greater-than-equal

不等于($ne):英文全稱not-equal

db.mydb.find({age: {$lte: 18, $gte: 10} }, {name: true, sex: true,? _id: false})

find的多條件查找:

?$in修飾符

$in修飾符可以輕松解決一鍵多值的查詢情況

db.mydb.find({age: {$in: [10, 18]} }, {name: true, sex: true,? _id: false})

?$or修飾符

它用來(lái)查詢多個(gè)鍵值的情況

db.mydb.find({$or: [{age: {$get: 20}}, {name: 'A'}]}, {name: true, sex: true,? _id: false})

?$and修飾符

$and用來(lái)查找?guī)讉€(gè)key值都滿足的情況

db.mydb.find({$and: [{age: {$get: 20}}, {name: 'A'}]}, {name: true, sex: true,? _id: false})

?$not修飾符

它用來(lái)查詢除條件之外的值

db.mydb.find({age:{ $not: {$gte: 20} } }, {name: true, sex: true,? _id: false})

?find的數(shù)組查詢

比如現(xiàn)在我們知道了一個(gè)人的愛(ài)好是’畫(huà)code’,’js’悠栓,但我們不知道是誰(shuí)霉涨,這時(shí)候我們就可以使用最簡(jiǎn)單的數(shù)組查詢(實(shí)際工作中按价,這種情況基本不常用,所以這種查詢只作知識(shí)點(diǎn)儲(chǔ)備就可以了)笙瑟。

db.mydb.find({ inserset: ['code', 'js'] }, {name: true, sex: true,? _id: false})

$all數(shù)組多項(xiàng)查詢

查詢出喜歡code的人員信息楼镐,也就是對(duì)數(shù)組中的對(duì)象進(jìn)行查詢,這時(shí)候要用到一個(gè)新的查詢修飾符$all往枷。

db.mydb.find({ inserset: {$all: 'code'} }, {name: true, sex: true,? _id: false})

$in數(shù)組的或者查詢

?用$all修飾符框产,是需要滿足所有條件的,$in主要滿足數(shù)組中的一項(xiàng)就可以被查出來(lái)(有時(shí)候會(huì)跟$or弄混)

db.mydb.find({ inserset: {$in: ['code', 'js']} }, {name: true, sex: true,? _id: false})

$size數(shù)組個(gè)數(shù)查詢

$size修飾符可以根據(jù)數(shù)組的數(shù)量查詢出結(jié)果错洁。比如現(xiàn)在我們要查找興趣的數(shù)量是5個(gè)人員信息秉宿,這時(shí)候就可以使用$size。

db.mydb.find({ inserset: {$size: 2} }, {name: true, sex: true,? _id: false})

$slice顯示選項(xiàng)

?有時(shí)候我并不需要顯示出數(shù)組中的所有值屯碴,而是只顯示前兩項(xiàng)描睦,比如我們現(xiàn)在想顯示每個(gè)人興趣的前兩項(xiàng),而不是把每個(gè)人所有的興趣都顯示出來(lái)导而。

db.mydb.find({}, {name: true, inserset: {$slice: 2},sex: true,? _id: false})

find的參數(shù)使用

query:這個(gè)就是查詢條件酌摇,MongoDB默認(rèn)的第一個(gè)參數(shù)。

fields:(返回內(nèi)容)查詢出來(lái)后顯示的結(jié)果樣式嗡载,可以用true和false控制是否顯示。

limit:返回的數(shù)量仍稀,后邊跟數(shù)字洼滚,控制每次查詢返回的結(jié)果數(shù)量。

skip:跳過(guò)多少個(gè)顯示技潘,和limit結(jié)合可以實(shí)現(xiàn)分頁(yè)遥巴。

sort:排序方式,從小到大排序使用1享幽,從大到小排序使用-1铲掐。

作一個(gè)最簡(jiǎn)單的分頁(yè),我們把同事集合(collections)進(jìn)行分頁(yè)值桩,每頁(yè)顯示兩個(gè)摆霉,并且按照年齡從小到大的順序排列

db.mydb.find({},{name:true,age:true,_id:false}).limit(0).skip(2).sort({age:1});

$where修飾符

它是一個(gè)非常強(qiáng)大的修飾符,但強(qiáng)大的背后也意味著有風(fēng)險(xiǎn)存在奔坟。它可以讓我們?cè)跅l件里使用javascript的方法來(lái)進(jìn)行復(fù)雜查詢携栋。我們先來(lái)看一個(gè)最簡(jiǎn)單的例子,現(xiàn)在要查詢年齡大于30歲的人員咳秉。

db.mydb.find({$where:"this.age>30"},{name:true,age:true,_id:false})

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末婉支,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子澜建,更是在濱河造成了極大的恐慌向挖,老刑警劉巖蝌以,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異何之,居然都是意外死亡跟畅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)帝美,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)碍彭,“玉大人,你說(shuō)我怎么就攤上這事悼潭”蛹桑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵舰褪,是天一觀的道長(zhǎng)皆疹。 經(jīng)常有香客問(wèn)我,道長(zhǎng)占拍,這世上最難降的妖魔是什么略就? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮晃酒,結(jié)果婚禮上表牢,老公的妹妹穿的比我還像新娘。我一直安慰自己贝次,他們只是感情好崔兴,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蛔翅,像睡著了一般敲茄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上山析,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天堰燎,我揣著相機(jī)與錄音,去河邊找鬼笋轨。 笑死秆剪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爵政。 我是一名探鬼主播鸟款,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼茂卦!你這毒婦竟也來(lái)了何什?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤等龙,失蹤者是張志新(化名)和其女友劉穎处渣,沒(méi)想到半個(gè)月后伶贰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡罐栈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年黍衙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荠诬。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琅翻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柑贞,到底是詐尸還是另有隱情方椎,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布钧嘶,位于F島的核電站棠众,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏有决。R本人自食惡果不足惜闸拿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望书幕。 院中可真熱鬧新荤,春花似錦、人聲如沸台汇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)励七。三九已至,卻和暖如春奔缠,著一層夾襖步出監(jiān)牢的瞬間掠抬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工校哎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留两波,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓闷哆,卻偏偏與公主長(zhǎng)得像腰奋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抱怔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 成功啟動(dòng)MongoDB后劣坊,再打開(kāi)一個(gè)命令行窗口輸入mongo,就可以進(jìn)行數(shù)據(jù)庫(kù)的一些操作屈留。輸入help可以看到基本...
    精氣神貫通閱讀 465評(píng)論 0 0
  • 成功啟動(dòng)MongoDB后局冰,再打開(kāi)一個(gè)命令行窗口輸入mongo测蘑,就可以進(jìn)行數(shù)據(jù)庫(kù)的一些操作。 輸入help可以看到基...
    你本來(lái)就很牛閱讀 28,625評(píng)論 0 3
  • 一康二、數(shù)據(jù)庫(kù)常用命令1碳胳、Help查看命令提示 復(fù)制代碼 代碼如下: helpdb.help();db.yourCol...
    字伯約閱讀 371評(píng)論 0 0
  • MongoDB指令 輸入help可以看到基本操作命令: show dbs:顯示數(shù)據(jù)庫(kù)列表 show collect...
    東海虬髯客閱讀 242評(píng)論 0 3
  • “紅了櫻桃,綠了芭蕉”春雨綿綿無(wú)期沫勿,秋雨颯颯而臨挨约。看著潑墨天空中零零星星的飛鳥(niǎo)产雹,他們是在歸巢嗎诫惭?可是那...
    蔚冉閱讀 298評(píng)論 0 0