婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MongoDB的創建、更新和刪除

MongoDB的創建、更新和刪除

熱門標簽:呼和浩特電銷外呼系統加盟 云南外呼系統 濟南電銷機器人加盟公司 電銷機器人是什么軟件 廣州長安公司怎樣申請400電話 杭州人工電銷機器人價格 老虎洗衣店地圖標注 蘋果汽車租賃店地圖標注 怎么投訴地圖標注

概要

  下面開始學習MongoDB最重要也是最基礎的部分:C(創建)R(查詢)U(更新)D(刪除);由于R(查詢)操作相對來說內容比較多,也比較繁瑣,

  同時使用頻率也比較高,所以下一篇會拿出來單獨介紹。廢話不多說,連上服務器,我們直接進入正題!

一、創建

  按照我們關系型數據庫的思想,一個服務器要想存放數據,首先要有數據庫,表,字段,約束,當然了也少不了主鍵,外鍵,索引,關系等;

  但是在MongoDB的世界里邊,我們不用預先的去創建這些信息從而直接來使用各個屬性。

  1、數據庫(database)

    a)、創建

      use mydb(創建并切換到名稱為mydb的數據庫實例下。注:如果你對其不進行任何操作,該數據庫是沒有任何實際意義的)

  2、集合(collection)

    a)、創建

      我們直接指定,不做任何預處理,指定一個名稱為users的數據集(相當于表),并向其中插入一條用戶數據。

      db.users.insert({ "name" : "wjg" , "age" : 24 })

      返回結果如下,表示你已經成功插入了一條數據:

      WriteResult({ "nInserted" : 1 })

    b)、顯式創建

      僅創建一個名稱為collectionName的,沒有任何大小和數量限制的數據集

      db.createCollection("collectionName")

      如果該數據集有重名,會給出已經存在的提示:

      { "ok" : 0, "errmsg" : "collection already exists", "code" : 48 }

      成功之后會給出ok的提示:

      { "ok" : 1 }

  3、文檔(document)

    a)、單一插入

      注:如果沒有主鍵“_id”,插入文檔的時候MongoDB會為我們自動保存一個進去。

這里我們指定一個“_id”,當然了,“_id”肯定是不能重復的,否則無法插入成功。

      db.users.insert({"_id":0,"name":"jack","age":20})

      成功插入數據之后:

      WriteResult({ "nInserted" : 1 })

    b)、批量插入

      注:一次性插入多個文檔會明顯提高插入速度;

插入文檔的大小限制為48MB;

如果其中有一個文檔插入失敗了,這個文檔之前的都可以插入成功,但是在它之后都會失敗;(不同的驅動可能會有不同的處理方式)

      db.users.insert([{"_id":1,"name":"tom","age":21},{"_id":2,"name":"joe","age":22},{"_id":3,"name":"bob","age":22}])

      批量插入成功之后會返回如下信息:

      BulkWriteResult({

"writeErrors":[],

"writeConcernErrors":[],

"nInserted":3,

"nUpserted":0,

"nMatched":0,

"nModified":0,

"nRemoved":0,

"upserted":[]})

      分別表示的大致意思為:

插入的錯誤信息,其他的插入錯誤信息,插入的文檔數量,特殊更新的文檔數量,匹配到的文檔數量,

更新的文檔數量,移出的文檔數量和特殊文檔更新信息

      特殊的文檔更新(upsert),其定義如下:

如果沒有找到符合更新條件的文檔,就會以這個條件和更新文檔為基礎創建一個新的文檔;如果找到了匹配的文檔,那么就正常更新

二、更新

  想要更新文檔,必須要有兩個參數:

    一個是查詢條件,用于定位到需要更新的目標文檔;另一個是修改器,用于說明要對找到的文檔進行哪些修改

  截至此刻為止,我們已經向mydb數據庫中名稱為users的數據集中添加了如下幾個文檔:

    a)、單一更新

      讓我們來為名字為bob的年齡增加一歲,直接將年齡更新為23歲

      db.users.update({"name":"bob"},{$set:{"age":23}}) //使用了$set修改器之后,只會更新age自段的值為23

      或者

      db.users.update({"name":"bob"},{"age":23}) //同樣會將age自段的值更新為23,但是會移出除了“_id”和本身之外的所有字段值

      具體詳情如下圖:

      注:如果需要更新的字段不存在,那么MongoDB會按字段順序進行插入,類似于上邊提到的特殊更新。

其實細心的童鞋會發現,我們都是以name作為條件進行更新,所以并不能保證其唯一性,那么MongoDB只會更新匹配到的第一個文檔。

這里還是建議大家指定一個唯一的文檔進行更新,"_id"可以幫你保證!

    b)、使用選擇器更新(重點)

      1、$set修改器

執行特殊更新操作;可以修改內嵌文檔;甚至可以更改鍵的類型;

Ⅰ、假設需求改了,我們需要為為所有用戶添加一個”hobby“的屬性用于存放用戶的喜好,那么我們可以這樣做:

  db.users.update({},{$set:{"hobby":"read"}}) //這樣做是錯的,哈哈。。

  更新后的文檔如下:

切記:update方法只會更新它匹配到的第一個文檔對象,所以這個操作只會將名字為”wjg“的用戶添加一個”hobby“屬性,其它對象不會添加

正確方式如下:

db.users.update({},{$set:{"hobby":"write"}},false,true) //第三個參數為是否啟用特殊更新,第四個為是否更新所有匹配的文檔;

這倆參數默認都為false

更新后的文檔如下:

  可以看到我們成功更新了五個文檔對象

Ⅱ、假設我們需求又變了,老板說了,每個用戶的愛好會有多個。那么簡單,因為我們可以直接將string類型的hobby屬性改成string數組類型的

  db.users.update({"_id":0},{"$set":{"hobby":["write","read","paly ping-pong"]}}) //將_id為0的hobby屬性更新為數組類型的

Ⅲ、然后我們發現tom壓根就沒有愛好,那么我們可以使用$unset修改器將其刪除

  db.users.update({"_id":1},{"$unset":{"hobby":1}}) //1表示徹底刪除這個鍵值對

Ⅳ、現在已經過去一年了,我們是時候把所有用戶的年齡加一歲了。這時$inc上場

  db.users.update({},{"$inc":{"age":1}},false,true) //別忘了將第四個參數置為true

  注:$inc修改器只針對數字類型,如果是string或者其他類型的會提示報錯: 

      提示無法將$inc應用到非數字類型上,并且給出錯誤位置:”_id“為2的文檔;

      我們將joe的age改為數字類型的重新執行一次,就可以成功啦!

Ⅴ、過了一段時間,jack又喜歡上了游泳,那么我們可以用$push這樣搞:

  db.users.update({"_id":0},{"$push":{"hobby":"swim"}}) //hobby必須是一個數組,所以你在其他文檔上使用是不會成功的

Ⅵ、然而jack不喜歡讀書了,我們就用$pull來移除“read”元素

  db.users.update({"_id":0},{"$pull":{"hobby":"read"}}) //它會移除數組中所有匹配到的“read”元素

  另外:db.users.update({"_id":0},{"$pop":{"hobby":1}}) //表示移除hobby中的最后一個元素,為-1表示移除第一個元素

  不知道大家有沒有發現,“_id”為0的文檔從第二的位置被移動到了數據集的末尾,這是因為該文檔尺寸變大的原因導致的,

  原先的位置已經容不下它了!

  那么這就引出了另外一個概念:填充因子,它是MongoDB為每個新文檔預留的增長空間。上邊的這種情況就會使填充因子增加。

  移動文檔是一個非常緩慢的操作,盡量讓填充因子的值接近1;

  通過db.users.stats()查看該數據集信息,“paddingFactor”即為填充因子的大小;

三、刪除

  刪除文檔相對來說就簡單了許多

  1、單一刪除

    給定一個查詢參數,只要符合條件的,都會被刪除

    db.users.remove({"_id":{"$lte":1}}) //刪除“_id”的值小于等于1的所有文檔

    返回結果如下:

    WriteResult({"nRemoved":2}) //成功刪除了兩個文檔

  2、清空整個數據集

    db.users.remove()

    如果數據較多的話,用db.users.drop()會明顯提升刪除速度

  注:刪除都是不可逆的,不能撤銷,也不能恢復,所以要謹慎使用;

    清空數據集的時候集合本身并不會被刪除,也不會刪除集合的元信息;

四、未解決問題

  1、先取出來再更新,使用查詢條件取出來的數據都無法用游標去獲取值,但是用findOne獲取的一個文檔對象就可以。。。

    如果哪位大神知道的話麻煩告訴小弟一下,多謝、、、哈哈。。

  最后一個問題已經找到,原因如下:

    第一個find操作雖然獲取的只是一個文檔對象,看似和下邊用findOne是一樣的效果,但是在MongoDB的shell中第一個的結果集是被默認為多個文檔集合,所以它無法判斷你想獲取的是哪個文檔的age。

您可能感興趣的文章:
  • MongoDB數據庫插入、更新和刪除操作詳解
  • MongoDB插入、更新、刪除文檔實現代碼
  • MongoDB數據更新方法干貨篇

標簽:興安盟 玉林 廈門 泰安 無錫 雞西 遼陽 自貢

巨人網絡通訊聲明:本文標題《MongoDB的創建、更新和刪除》,本文關鍵詞  MongoDB,的,創建,更,新和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MongoDB的創建、更新和刪除》相關的同類信息!
  • 本頁收集關于MongoDB的創建、更新和刪除的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品热久久久久夜色精品三区 | 国产欧美一区二区精品久导航| 欧美日韩中文精品| 色婷婷精品久久二区二区蜜臂av| 成人性视频免费网站| 国产91精品一区二区麻豆网站| 国产成人免费视频| 国产91在线|亚洲| 99久久er热在这里只有精品15| 成人精品国产一区二区4080| 91在线观看免费视频| 91久久线看在观草草青青| 欧美在线小视频| 欧美日韩小视频| 精品国产伦一区二区三区观看方式 | 日韩专区在线视频| 免费精品视频在线| 国产麻豆精品theporn| 99久久伊人网影院| 欧美色男人天堂| 精品国产凹凸成av人网站| 国产亚洲综合性久久久影院| 中文字幕一区不卡| 五月天婷婷综合| 国产综合色精品一区二区三区| 成人黄色电影在线| 91久久精品国产91性色tv| 制服.丝袜.亚洲.另类.中文| 欧美国产日韩精品免费观看| 一区二区日韩av| 国产一区中文字幕| 色婷婷亚洲精品| 久久人人爽爽爽人久久久| 亚洲色图一区二区三区| 麻豆国产精品官网| 97久久精品人人澡人人爽| 欧美一激情一区二区三区| 国产精品二区一区二区aⅴ污介绍| 午夜免费欧美电影| 懂色av一区二区三区蜜臀 | 国v精品久久久网| 欧美亚一区二区| 亚洲国产高清不卡| 日本伊人色综合网| 色香蕉成人二区免费| xvideos.蜜桃一区二区| 亚洲最新视频在线播放| 国产成人av一区二区| 欧美日韩成人激情| 又紧又大又爽精品一区二区| 极品少妇xxxx精品少妇偷拍| 欧美日韩久久久一区| 国产精品对白交换视频| 国产乱人伦偷精品视频不卡 | 欧美美女一区二区| 国产精品福利影院| 粉嫩嫩av羞羞动漫久久久| 日韩欧美精品在线视频| 亚洲国产欧美在线人成| 91猫先生在线| 亚洲蜜臀av乱码久久精品| 国产最新精品免费| 欧美福利一区二区| 天堂va蜜桃一区二区三区| 欧美影片第一页| 亚洲国产精品一区二区久久恐怖片| av中文字幕在线不卡| 国产精品乱码人人做人人爱| 成人污污视频在线观看| 国产三级久久久| 国产成人av福利| 中文字幕电影一区| 丁香六月综合激情| 国产精品美女久久久久久久| 夫妻av一区二区| 欧美经典三级视频一区二区三区| 国产一级精品在线| 国产午夜精品一区二区三区四区 | 亚洲精品老司机| 91国偷自产一区二区三区观看| 一区二区高清在线| 色乱码一区二区三区88| 亚洲人成小说网站色在线| 99久久综合国产精品| 久久久久成人黄色影片| 精品亚洲成a人在线观看| 4438x亚洲最大成人网| 亚洲曰韩产成在线| 在线观看av不卡| 亚洲成av人片一区二区三区 | 久久欧美中文字幕| 丝袜诱惑亚洲看片| 精品久久五月天| 国产精品亚洲一区二区三区妖精 | 色婷婷狠狠综合| 91精品国产一区二区三区香蕉| 亚洲永久免费av| 欧美午夜电影一区| 亚洲第一狼人社区| 日韩一区二区三区观看| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品女上位| 91在线视频观看| 一区二区三区蜜桃网| 欧美日韩免费在线视频| 日本在线观看不卡视频| 日韩欧美国产一二三区| 国产美女久久久久| 1024成人网| 69av一区二区三区| 国产高清精品久久久久| 午夜精品久久久久久久99樱桃| 67194成人在线观看| 国产精品一区在线观看你懂的| 欧美一卡2卡三卡4卡5免费| 久久电影网电视剧免费观看| 国产精品欧美久久久久一区二区| 色吊一区二区三区| 日韩av二区在线播放| 欧美激情中文不卡| 欧美图区在线视频| 成人激情小说网站| 日本中文一区二区三区| 中文字幕第一区综合| 欧美人牲a欧美精品| 国产精品一区二区不卡| 亚洲一区影音先锋| 亚洲欧美日韩国产中文在线| 日韩免费看的电影| 91在线视频播放| 国内精品写真在线观看| 一区二区三区在线播放| 久久综合色天天久久综合图片| 日韩午夜av一区| 91在线观看一区二区| 精品在线播放午夜| 一区二区三区在线视频观看58 | 波多野结衣在线一区| 亚洲成人精品一区二区| 亚洲国产电影在线观看| 精品国精品国产尤物美女| 91传媒视频在线播放| 久久99久久精品欧美| 久久精品国产免费| 亚洲不卡在线观看| 一区二区三区日韩欧美精品| 国产精品久久久久桃色tv| 精品日韩在线一区| 欧美一区二区三区男人的天堂| 95精品视频在线| av在线不卡免费看| 国产乱码精品一区二区三区忘忧草| 日日摸夜夜添夜夜添精品视频| 亚洲成人资源在线| 亚洲一区二区免费视频| 亚洲美腿欧美偷拍| 亚洲欧美偷拍卡通变态| 亚洲视频综合在线| 久久久精品天堂| 最新日韩在线视频| 中文字幕在线视频一区| 国产拍揄自揄精品视频麻豆| 久久夜色精品国产噜噜av| 日韩欧美另类在线| 91精品国产综合久久久久久| 欧美日韩五月天| 精品视频资源站| 7777精品伊人久久久大香线蕉的 | 午夜视频久久久久久| 一区二区三区在线播放| 一区二区三区精品视频| 亚洲最新在线观看| 亚洲成人av一区二区三区| 爽好久久久欧美精品| 日日夜夜免费精品视频| 日本欧美肥老太交大片| 裸体歌舞表演一区二区| 久久99精品久久久久久动态图| 韩国v欧美v亚洲v日本v| 国产成人在线色| 国产精品一区一区三区| 91视视频在线观看入口直接观看www | 国产综合色产在线精品| 精品在线你懂的| 国产成人亚洲综合a∨婷婷图片| 粉嫩av一区二区三区粉嫩 | 亚洲免费av高清| 丝袜脚交一区二区| 99re成人在线| 欧美久久久久久蜜桃| 精品理论电影在线| 日本一区二区不卡视频| 亚洲欧美偷拍另类a∨色屁股| 中文字幕欧美一| 国产永久精品大片wwwapp| 99久久免费精品高清特色大片| 在线观看免费亚洲| 精品国产成人在线影院| 亚洲日本va午夜在线电影| 国产精品毛片高清在线完整版|