4奠宜、創(chuàng)建、更新和刪除文檔(MongoDB筆記)

一瞻想、插入并保存文檔

可以使用insert方法向目標(biāo)集合插入一個(gè)文檔:

> db.test.insert("bar" : "baz")

這個(gè)操作會(huì)給文檔自動(dòng)增加一個(gè)"_id"鍵(要是原來(lái)沒(méi)有的話(huà))压真。

1.1 批量插入

使用批量插入,可以將一組文檔傳遞給數(shù)據(jù)庫(kù)蘑险,使用insert函數(shù)實(shí)現(xiàn)批量插入:

1

注意:之前的批量插入函數(shù)batchInsert已經(jīng)過(guò)時(shí)了滴肿。直接使用insert函數(shù)就可以。

只有需要將多個(gè)文檔插入到一個(gè)集合時(shí)漠其,這種方式才會(huì)有用嘴高。不能在單次請(qǐng)求中將多個(gè)文檔批量插入到多個(gè)集合中。要是只導(dǎo)入原始數(shù)據(jù)(如和屎,從MySQL中導(dǎo)入)拴驮,可以使用命令行工具,如mongoimport柴信,而不是批量插入套啤。另一方面,可以使用批量插入在將數(shù)據(jù)存入MongoDB之前對(duì)數(shù)據(jù)做一個(gè)小的修改(如將日期轉(zhuǎn)換為日期類(lèi)型,或添加自定義的"_id")潜沦,這樣批量插入也可以用于導(dǎo)入數(shù)據(jù)萄涯。

當(dāng)前版本的MongoDB能接受的最大消息長(zhǎng)度是48MB,所以在一次批量插入中能插入的文檔是有限制的唆鸡。如果試圖插入48MB以上的數(shù)據(jù)涝影,多數(shù)驅(qū)動(dòng)程序會(huì)將這個(gè)批量插入的請(qǐng)求拆分為多個(gè)48MB的批量插入請(qǐng)求往毡。

如果在執(zhí)行批量插入的過(guò)程中有一個(gè)文檔插入失敗愉耙,那么在這個(gè)文檔之前的所有文檔都會(huì)成功插入到集合中撇眯,而這個(gè)文檔及之后的所有文檔全部插入失敗今布。


2

1.2 插入校驗(yàn)

檢查大小是一項(xiàng)基本結(jié)構(gòu)檢查:所有文檔都必須小于16MB(這個(gè)值是MongoDB設(shè)計(jì)者人為定的递宅,未來(lái)有可能會(huì)增加)贝乎。這個(gè)限制主要是為了防止不良的設(shè)計(jì)模式啃匿,并且保證性能一直晃择∥胀可以使用Object.bsonsize(doc)查看文檔的BSON大心饭帧(單位為字節(jié))。MongoDB只進(jìn)行最基本的檢查澡绩,所以插入非法數(shù)據(jù)很容易稽揭。主流語(yǔ)言的所有驅(qū)動(dòng)程序都會(huì)在將數(shù)據(jù)庫(kù)之前做大量的數(shù)據(jù)校驗(yàn)(比如文檔是否過(guò)大,文檔是否包含非UTF-8字符串)

二肥卡、刪除文檔

現(xiàn)在數(shù)據(jù)庫(kù)中有些數(shù)據(jù)淀衣,要?jiǎng)h除它:

> db.test.remove()

上述命令會(huì)刪除test集合中的所有文檔。但是不會(huì)刪除集合本身召调,也不會(huì)刪除集合的元信息膨桥。remove函數(shù)可以接受一個(gè)查詢(xún)文檔作為可選參數(shù)。給定這個(gè)參數(shù)以后唠叛,只有符合條件的文檔才被刪除只嚣。例如,假設(shè)要?jiǎng)h除mailing.list集合中所有"opt-out"true的人:

> db.mailing.list.remove("opt-out" : true)

刪除數(shù)據(jù)是永久的艺沼,不能撤銷(xiāo)册舞,也不能恢復(fù)。

2.1 刪除速度

刪除文檔通常很快障般,但是如果要清空整個(gè)集合调鲸,那么使用drop直接刪除集合會(huì)更快(然后在這個(gè)空集合上重建各項(xiàng)索引)。在刪除大量數(shù)據(jù)時(shí)使用db.test.drop()代替removefindOne效率會(huì)更高挽荡,但是不能指定任何限定條件藐石。結(jié)果是整個(gè)集合都被刪除了,所有元數(shù)據(jù)也都不見(jiàn)了定拟。

三于微、更新文檔

文檔存入數(shù)據(jù)庫(kù)以后,就可以使用update方法來(lái)更新它。update有兩個(gè)參數(shù)株依,一個(gè)是查詢(xún)文檔驱证,用于定位需要更新的目的文檔;另一個(gè)是修改器文檔恋腕,用于說(shuō)明要對(duì)找到的文檔進(jìn)行哪些修改抹锄。
未完待續(xù)。荠藤。祈远。

最后編輯于
?著作權(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
  • 文/不壞的土叔 我叫張陵铸董,是天一觀(guān)的道長(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)容