MongoDB的增刪改查

1.MongoDB的插入文檔

MongoDB使用insert()和save()插入文檔數(shù)據(jù)
插入語(yǔ)法

  db.databse_name.insert(content)

實(shí)例

  >db.sjk.insert({
      title:"數(shù)據(jù)庫(kù)",
      author:"Larry Ellison",
      content:"數(shù)據(jù)庫(kù)知識(shí)" 
  })

如果我們創(chuàng)建的集合sjk鸥鹉,不在相對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi)系統(tǒng)會(huì)自動(dòng)創(chuàng)建
查看我們我們插入的內(nèi)容

  >db.sjk.find()
  >db.sjk.find().pretty()

db.sjk.find().pretty(), pretty()函數(shù)就是為了讓所查看的數(shù)據(jù)庫(kù)內(nèi)容更美觀的展現(xiàn)出來(lái)

2.更新數(shù)據(jù)庫(kù)

MongoDB更新數(shù)據(jù)庫(kù)的語(yǔ)法

  db.database_name.update(content)

update() 方法
update() 方法用于更新已存在的文檔循诉。語(yǔ)法格式如下:

  db.collection.update(
  <query>,
  <update>,
  {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
  }
  )

參數(shù)說(shuō)明:

  • query : update的查詢(xún)條件,類(lèi)似sql update查詢(xún)內(nèi)where后面的享甸。
  • update : update的對(duì)象和一些更新的操作符(如$,$inc...)等嗽冒,也可以理解為sql update查詢(xún)內(nèi)set后面的
  • upsert : 可選,這個(gè)參數(shù)的意思是就珠,如果不存在update的記錄,是否插入objNew,true為插入醒颖,默認(rèn)是false妻怎,不插入。
  • multi : 可選泞歉,mongodb 默認(rèn)是false,只更新找到的第一條記錄逼侦,如果這個(gè)參數(shù)為true,就把按條件查出來(lái)多條記錄全部更新。
  • writeConcern :可選腰耙,拋出異常的級(jí)別榛丢。

實(shí)例

  db.sjk.insert({
       name:"張三",
       age:15,
       sex:"女"   
  })

接下來(lái)用update更新操作

  db.sjk.update({"name":張三},{$set:{"age":20}})
  WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 輸出信息

以上語(yǔ)句只會(huì)修改第一條發(fā)現(xiàn)的文檔,如果你要修改多條相同的文檔挺庞,則需要設(shè)置 multi 參數(shù)為 true晰赞。

db.col.update({"name":"張三"},{$set:{"age":20}},{multi:true})

更多實(shí)例

只更新第一條記錄:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一條:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加加進(jìn)去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一條記錄:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

3.刪除數(shù)據(jù)庫(kù)

remove() 方法的基本語(yǔ)法格式如下所示:

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

如果你的 MongoDB 是 2.6 版本以后的,語(yǔ)法格式如下:

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
    writeConcern: <document>
  }

)
參數(shù)說(shuō)明:

  • query :(可選)刪除的文檔的條件。

  • justOne : (可選)如果設(shè)為 true 或 1掖鱼,則只刪除一個(gè)文檔然走。

  • writeConcern :(可選)拋出異常的級(jí)別。

    db.col.remove({"name":"張三"})
    WriteResult({ "nRemoved" : 1 })           # 刪除了兩條數(shù)據(jù)
    db.col.find()
    ……                                        # 沒(méi)有數(shù)據(jù)
    

如果你只想刪除第一條找到的記錄可以設(shè)置 justOne 為 1戏挡,如下所示:

  >db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

如果你想刪除所有數(shù)據(jù)芍瑞,可以使用以下方式(類(lèi)似常規(guī) SQL 的 truncate 命令):

   >db.col.remove({})
   >db.col.find()
   >

4.查詢(xún)數(shù)據(jù)

MongoDB 查詢(xún)文檔使用 find() 方法。
find() 方法以非結(jié)構(gòu)化的方式來(lái)顯示所有文檔褐墅。

語(yǔ)法

MongoDB 查詢(xún)數(shù)據(jù)的語(yǔ)法格式如下:

  db.collection.find(query, projection)

query :可選拆檬,使用查詢(xún)操作符指定查詢(xún)條件
projection :可選,使用投影操作符指定返回的鍵妥凳。查詢(xún)時(shí)返回文檔中所有鍵值秩仆, 只需省略該參數(shù)即可(默認(rèn)省略)。
如果你需要以易讀的方式來(lái)讀取數(shù)據(jù)猾封,可以使用 pretty() 方法澄耍,語(yǔ)法格式如下:

  >db.col.find().pretty()

pretty() 方法以格式化的方式來(lái)顯示所有文檔。

實(shí)例

以下實(shí)例我們查詢(xún)了集合 col 中的數(shù)據(jù):

  db.col.find().pretty()
  {
      "name":"張三",
      "age":15,
      "sex":"女"
  }

除了 find() 方法之外晌缘,還有一個(gè) findOne() 方法齐莲,它只返回一個(gè)文檔。
MongoDB 與 RDBMS Where 語(yǔ)句比較
如果你熟悉常規(guī)的 SQL 數(shù)據(jù)磷箕,通過(guò)下表可以更好的理解 MongoDB 的條件語(yǔ)句查詢(xún):
操作 格式 范例 RDBMS中的類(lèi)似語(yǔ)句

等于 {<key>:<value>} db.col.find({"by":"菜鳥(niǎo)教程"}).pretty() where by = '菜鳥(niǎo)教程'
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
MongoDB AND 條件
MongoDB 的 find() 方法可以傳入多個(gè)鍵(key)选酗,每個(gè)鍵(key)以逗號(hào)隔開(kāi),及常規(guī) SQL 的 AND 條件岳枷。
語(yǔ)法格式如下:

db.col.find({key1:value1, key2:value2}).pretty()

以上實(shí)例中類(lèi)似于 WHERE 語(yǔ)句:WHERE by='菜鳥(niǎo)教程' AND title='MongoDB 教程'
MongoDB OR 條件
MongoDB OR 條件語(yǔ)句使用了關(guān)鍵字 $or,語(yǔ)法格式如下:

db.col.find(

{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
實(shí)例
以下實(shí)例中芒填,我們演示了查詢(xún)鍵 by 值為 菜鳥(niǎo)教程 或鍵 title 值為 MongoDB 教程 的文檔。

db.col.find({$or:[{"by":"菜鳥(niǎo)教程"},{"title": "MongoDB 教程"}]}).pretty()

AND 和 OR 聯(lián)合使用
以下實(shí)例演示了 AND 和 OR 聯(lián)合使用空繁,類(lèi)似常規(guī) SQL 語(yǔ)句為: 'where likes>50 AND (by = '菜鳥(niǎo)教程' OR title = 'MongoDB 教程')'

db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鳥(niǎo)教程"},{"title": "MongoDB 教程"}]}).pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)",
"by" : "菜鳥(niǎo)教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}

<本文參考菜鳥(niǎo)教程>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末殿衰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盛泡,更是在濱河造成了極大的恐慌闷祥,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傲诵,死亡現(xiàn)場(chǎng)離奇詭異凯砍,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拴竹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)悟衩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人栓拜,你說(shuō)我怎么就攤上這事座泳“呦欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵钳榨,是天一觀的道長(zhǎng)舰罚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)薛耻,這世上最難降的妖魔是什么营罢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮饼齿,結(jié)果婚禮上饲漾,老公的妹妹穿的比我還像新娘。我一直安慰自己缕溉,他們只是感情好考传,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著证鸥,像睡著了一般僚楞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枉层,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天泉褐,我揣著相機(jī)與錄音,去河邊找鬼鸟蜡。 笑死膜赃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揉忘。 我是一名探鬼主播跳座,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泣矛!你這毒婦竟也來(lái)了疲眷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乳蓄,失蹤者是張志新(化名)和其女友劉穎咪橙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體虚倒,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年产舞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了魂奥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡易猫,死狀恐怖耻煤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤哈蝇,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布棺妓,位于F島的核電站,受9級(jí)特大地震影響炮赦,放射性物質(zhì)發(fā)生泄漏怜跑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一吠勘、第九天 我趴在偏房一處隱蔽的房頂上張望性芬。 院中可真熱鬧,春花似錦剧防、人聲如沸植锉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俊庇。三九已至,卻和暖如春鸡挠,著一層夾襖步出監(jiān)牢的瞬間暇赤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工宵凌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鞋囊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓瞎惫,卻偏偏與公主長(zhǎng)得像溜腐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瓜喇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • 本文為轉(zhuǎn)載挺益,原文:MongoDB的增刪改查基本命令 創(chuàng)建庫(kù) 命令: 若數(shù)據(jù)庫(kù)存在,則該命令的效果是切換到當(dāng)前數(shù)據(jù)庫(kù)...
    ChainZhang閱讀 1,590評(píng)論 0 1
  • [TOC]未完更新中... 1. MongoDB安裝及配置 官網(wǎng)下載地址 安裝msc文件,現(xiàn)在3.4的版本,有了m...
    BigJeffWang閱讀 2,248評(píng)論 0 49
  • MongoDB文檔 MongoDB 概念解析 不管我們學(xué)習(xí)什么數(shù)據(jù)庫(kù)都應(yīng)該學(xué)習(xí)其中的基礎(chǔ)概念乘寒,在mongodb中基...
    birdflying閱讀 1,990評(píng)論 0 27
  • mongodb mongodb 是一種非關(guān)系型數(shù)據(jù)庫(kù) 1. 創(chuàng)建數(shù)據(jù)庫(kù) use [數(shù)據(jù)庫(kù)名稱(chēng)] 2. 創(chuàng)建數(shù)據(jù)表 ...
    crazy__stone閱讀 212評(píng)論 0 0
  • 例如:現(xiàn)在有數(shù)據(jù)庫(kù) ·
    心愿2016閱讀 512評(píng)論 0 1