MongoDB的增刪改查基本命令

本文為轉載膊升,原文:MongoDB的增刪改查基本命令

創(chuàng)建庫

命令:

> use dbName

若數(shù)據(jù)庫存在,則該命令的效果是切換到當前數(shù)據(jù)庫;若該數(shù)據(jù)庫不存在亚亲,則該命令可以創(chuàng)建數(shù)據(jù)庫,并切換到該數(shù)據(jù)庫腐缤。

下面是創(chuàng)建mydb數(shù)據(jù)庫的截圖:

創(chuàng)建集合

命令:

> db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean>, size: <number>, max <number>} )

相關參數(shù)說明

name:集合的名字
capped:是否啟用集合限制捌归,如果開啟需要制定一個限制條件,默認為不啟用岭粤,這個參數(shù)沒有實際意義
size:限制集合使用空間的大小惜索,默認為沒有限制
max:集合中最大條數(shù)限制,默認為沒有限制
autoIndexId:是否使用_id作為索引剃浇,默認為使用(true或false)
size的優(yōu)先級比max要高

常用方法介紹

  1. 一般來說巾兆,我們創(chuàng)建集合用db.createCollection(name),如:db.createCollection("log"),創(chuàng)建一個名字為log的集合猎物,沒有任何的大小,數(shù)量限制角塑,使用_id作為默認索引;
  2. 限制集合空間的大小:db.createCollection("log",{size:1024})db.createCollection("log",{capped:true,size:1024}),創(chuàng)建一個名字為log集合茎刚,限制它的空間大小為1M毙芜,如果超過1M的大小,則會刪除最早的記錄窒朋;
  3. 限制集合的最大條數(shù):db.createCollection("log",{max:1024})搀罢,創(chuàng)建一個名字為log集合,最大條數(shù)為1024條侥猩,超過1024再插入數(shù)據(jù)的話會刪除最早的一條記錄榔至。這個不能使用capped:true,否則會報錯拭宁;
  4. 即限制最大條數(shù)有限制使用空間大新逋恕:db.createCollection("log",{size:1024,max:1024})或db.createCollection("log",{capped:true,size:1024,max:1024})杰标,限制集合最大使用空間為1M,最大條數(shù)為1024條

下面是在mydb數(shù)據(jù)中創(chuàng)建students集合的截圖:

數(shù)據(jù)插入

命令:

db.collectionName.insert(value)

其中valueBson格式的數(shù)據(jù)宙攻。
接下來柔滔,我們便在我們的students集合中添加數(shù)據(jù):

> db.students.insert({
    name:"tom",
    age:18,
    gender:"male",
    grade:"Freshman"
})

結果如下:



下面我們多插入幾條數(shù)據(jù)咆霜,便于后面的查詢:

db.students.insert({
name:"bob",
age:19,
gender:"male",
grade:"Sophomore"
})
db.students.insert({
name:"Oliver",
age:21,
gender:"male",
grade:"Junior"
})
db.students.insert({
name:"Alice",
age:22,
gender:"female",
grade:"Senior"
})
db.students.insert({
name:"Lily",
age:21,
gender:"female",
grade:"Senior"
})
db.students.insert({
name:"Klay",
age:20,
gender:"male",
grade:"Sophomore"
})

結果:


查詢

簡單查詢

命令:

> db.collectionName.find(option)

比如以下命令就是查詢出我們之前插入到students的全部數(shù)據(jù):

db.students.find()


當然你也可以在命令的后面加一個pretty()方法下翎,這樣查詢出來的結果會被格式化:

db.students.find().pretty()

結果:



(截圖沒截完全)
這樣的話,數(shù)據(jù)可讀性會高一點。

查詢name為Alice的學生:

db.students.find({name:"Alice"}).pretty()

條件操作符

MongDB的條件操作符如下:

  • > : 大于 - $gt #greater than
  • <:小于 - $lt # less than
  • <=:小于等于 - $lte
  • >=:大于等于 -$gte
  • !=:不等于 -$ne

比如查詢年齡大于20歲的學生:

db.students.find({age:{$gt:20}})

類型操作符

另外萌焰,mongodb還有一種按照數(shù)據(jù)類型來查詢的操作符$type:
type的值如下:

  • 雙精度型-1
  • 字符串-2
  • 對象-3
  • 數(shù)組-4
  • 二進制數(shù)據(jù)-5
  • 對象ID-7
  • 布爾類型-8
  • 數(shù)據(jù)-9
  • 空-10
  • 正則表達式-11
  • JS代碼-13
  • 符號-14
  • 有作用域的JS代碼-15
  • 32位整型數(shù)-16
  • 時間戳-17
  • 64位整型數(shù)-18
  • Min key-255
  • Max key-127

例如扒俯,查找name是字符串的文檔記錄:

db.students.find({name:{$type:2}})

查找年齡大于等于20歲的男學生:

 db.students.find({age:{$gte:20},gender:"male"})

或($in)

查詢大一族购、大二的學生:

db.students.find({grade:{$in:["Freshman","Sophomore"]}})

非($nin)

查詢不是大一、大二的學生:

db.students.find({grade:{$nin:["Freshman","Sophomore"]}})

正則匹配

查詢姓名包含li的學生:

db.students.find({name:/li/})

where

查找students集合中包含name字段的數(shù)據(jù):

db.getCollection("students").find({$where:function(){ return !!this.name; } })

limit 與 skip

讀取指定數(shù)量的數(shù)據(jù)記錄limit
范例:

db.students.find().limit(2)


讀取2條記錄陵珍,默認是排在最前面的那2條被讀取。
讀取時跳過指定數(shù)量的數(shù)據(jù)記錄skip
范例:

db.students.find().limit(2).skip(2)

當然违施,還可以添加 find 的查找條件的參數(shù)互纯,以便進行更精確的查找。
有了這個功能磕蒲,也就是說留潦,我們可以分頁查詢了只盹。

排序sort

mongodb的sort方法可以按照指定的字段進行升序或降序。
升序為1兔院,降序為-1
語法:

db.collectionName.find().sort({KEY:1|-1})

范例殖卑,查詢students按照年齡升序排列:

db.students.find().sort({age:1})

修改(update)

命令:

db.collectionName.update(selector, newValue, upserts, multipleUpdate)

參數(shù)詳解:

  • selector:是個檢索選擇器,明確查詢條件的
  • newValue:要更新的內容坊萝,包含兩種基本情況孵稽,即有沒有$set、$inc十偶、$push這些參數(shù):
    情況一菩鲜、無參數(shù),則newValue替換掉原先selector的內容惦积;
    情況二接校、有參數(shù),則$set是對指定field進行更新newValue狮崩;$inc要求指定field為數(shù)值蛛勉,加上newValue值;$push要求指定field為數(shù)組睦柴,為數(shù)組加入newValue項诽凌。
  • upserts:是個邏輯值參數(shù),默認為false爱只,即根據(jù)selector查詢皿淋,查到了document,那就執(zhí)行更新恬试;沒查到就啥也不做窝趣。那設置為true,意思就很明顯了训柴,如果沒查到就Create一個新document存放selector和newValue哑舒。
  • multipleUpdate:也是個邏輯值參數(shù),默認為false幻馁,即根據(jù)selector查詢洗鸵,查到了documents,那就執(zhí)行更新第一條document仗嗦;設置為true的話膘滨,就把所有查到的document都更新

案例,將tom的年齡修改為19歲:

db.students.update({name:"tom"},{$set:{age:19}})

刪除(remove)

命令:

db.collection.remove(<query>,<justOne>)

參數(shù)說明:

  • query:(可選)刪除的文檔的條件稀拐。若該參數(shù)為空火邓,則刪除該集合的所有文檔。
  • justOne:(可選)如果設為 true 或 1,則只刪除一個文檔铲咨。

若是刪除整個集合建議用drop方法躲胳。db.collectionName.drop()

案例,刪除姓名為bob的學生:

db.students.remove({name:"bob"})

本文為原創(chuàng)纤勒,轉載請注明出處

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末坯苹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子摇天,更是在濱河造成了極大的恐慌粹湃,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闸翅,死亡現(xiàn)場離奇詭異再芋,居然都是意外死亡,警方通過查閱死者的電腦和手機坚冀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門济赎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人记某,你說我怎么就攤上這事司训。” “怎么了液南?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵壳猜,是天一觀的道長。 經(jīng)常有香客問我滑凉,道長统扳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任畅姊,我火速辦了婚禮咒钟,結果婚禮上,老公的妹妹穿的比我還像新娘若未。我一直安慰自己朱嘴,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布粗合。 她就那樣靜靜地躺著萍嬉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隙疚。 梳的紋絲不亂的頭發(fā)上壤追,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音供屉,去河邊找鬼行冰。 笑死捅厂,一個胖子當著我的面吹牛,可吹牛的內容都是我干的资柔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼撵割,長吁一口氣:“原來是場噩夢啊……” “哼贿堰!你這毒婦竟也來了?” 一聲冷哼從身側響起啡彬,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤羹与,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庶灿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纵搁,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年往踢,在試婚紗的時候發(fā)現(xiàn)自己被綠了腾誉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡峻呕,死狀恐怖利职,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情瘦癌,我是刑警寧澤猪贪,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站讯私,受9級特大地震影響热押,放射性物質發(fā)生泄漏。R本人自食惡果不足惜斤寇,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一桶癣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抡驼,春花似錦鬼廓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至馏锡,卻和暖如春雷蹂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杯道。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工匪煌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓萎庭,卻偏偏與公主長得像霜医,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子驳规,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容