<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MongoDB文檔的更新

      3.4 更新文檔

      MongoDB通過update函數與save函數來更新集合中的文檔。

       

      3.4.1 update函數

      update() 函數用于更新已存在的文檔。

      語法格式:

       db.集合名稱.update(

          <query>,

          <update>,

          < upsert:boolean>,

          < multi:boolean>

      )

      參數說明:

      query : update的查詢條件,類似sql update查詢內where后面的。

      update : update的對象和一些更新的操作符等,也可以理解為sql update查詢內set后面的。

      upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入這個document,true為插入,默認是false,不插入。

      multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。

       

      首先插入一條文檔數據:

      db.col.insert({

          title: 'MongoDB 教程',

          description: 'MongoDB 是一個 Nosql 數據庫',

          by: '北京尚學堂',

          tags: ['mongodb', 'database', 'NoSQL'],

          likes: 100

      })

      查看插入結果:

       

      在MongoDB中的update是有兩種更新方式,一種是覆蓋更新,一種是表達式更新。

      覆蓋更新:顧名思義,就是通過某條件,將新文檔覆蓋原有文檔。

      表達式更新:這種更新方式是通過表達式來實現復雜更新操作,如:字段更新、數值計算、數組操作、字段名修改等。

       

      (一) 表達式更新

      通過 update() 方法來更新標題(title):

      db.col.update(

          {'title':'MongoDB 教程'},

          {$set:{'title':'MongoDB'}}

      )

      查看更新結果:

       

       更多案例:

      只更新第一條滿足條件的記錄:

      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 );

       

      全部添加進去:

      db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

       

      只更新第一條記錄:(等同第一個)

      db.col.update( { "count" : { $lt : 10 } } , { $set : { "count" : 1} },false,false );

       

      在表達式更新中,可以進行多種復雜操作。這些操作都通過update參數中的操作符實現。下面來講解些常用更新操作符。首先準備一些數據:

      db.stu.insert([{'name':'zhangsan', 'age':20},{'name':'lisi', 'age':22},{'name':'wangwu', 'age':25}]);

       

      1 $inc

      用法:{$inc:{field:value}}

      作用:對一個數字字段的某個field增加value

      示例:將name為zhangsan的學生的age增加5

      命令:db.stu.update({name:"zhangsan"},{$inc:{age:5}})

      結果:

       

      2 $set

      用法:{$set:{field:value}}

      作用:把文檔中某個字段field的值設為value

      示例:把zhangsan的年齡設為23歲

      命令:db.stu.update({name:"zhangsan"},{$set:{age:23}})

      結果:

       

       

      3 $unset

      用法:{$unset:{field:1}}

      作用:刪除某個字段field

      示例:將zhangsan的年齡字段刪除

      命令:db.stu.update({name:"zhangsan"},{$unset:{age:1}})

      結果:

       

       

      4 $push

      用法:{$push:{field:value}}

      作用:把value追加到field里。注:field只能是數組類型,如果field不存在,會自動插入一個數組類型

      示例:給zhangsan添加別名"xiaozhang"

      命令:db.stu.update({name:"zhangsan"},{$push:{"ailas":"xiaozhang"}})

      結果:

       

      5 $addToSet

      用法:{$addToSet:{field:value}}

      作用:加一個值到數組內,而且只有當這個值在數組中不存在時才增加。

      示例:往zhangsan的別名字段里添加兩個別名A1、A2

      命令:db.stu.update({name:"zhangsan"},{$addToSet:{"ailas":["A1","A2"]}})

      結果:

      注意:此處加入的數據是一個數據為A1和A2的數組對象。并不是將兩個數據一次加入ailas數組中。

       

      6 $pop

      用法:刪除數組內第一個值:{$pop:{field:-1}}、刪除數組內最后一個值:{$pop:{field:1}}

      作用:用于刪除數組內的一個值

      示例:刪除zhangsan記錄中alias字段中最后一個別名

      命令:db.stu.update({name:"zhangsan"},{$pop:{"ailas":1}})

      結果:

       

      7 $pull

      用法:{$pull:{field:_value}}

      作用:從數組field內刪除一個等于_value的值

      示例:刪除zhangs記錄中的別名xiaozhang

      命令:db.stu.update({name:"zhangsan"},{$pull:{"ailas":"xiaozhang"}})

      結果:

       

       

      8 $pullAll

      用法:{$pullAll:value_array}

      作用:用法同$pull一樣,可以一次性刪除數組內的多個值。

      示例:刪除zhangsan記錄內的A1和A2別名

      命令:db.stu.update({name:"zhangsan"},{$pullAll:{"ailas":["A1","A2"]}})

       

      9 $rename

      用法:{$rename:{old_field_name:new_field_name}}

      作用:對字段進行重命名

      示例:把zhangsan記錄的name字段重命名為sname

      命令:db.stu.update({name:"zhangsan"},{$rename:{"name":"sname"}})

      結果: 

       

      3.4.2 save函數

      save()函數的作用是保存文檔,如果文檔存在則覆蓋,如果文檔不存在則新增。save()函數對文檔是否存在的唯一判斷標準是"_id"系統唯一字段是否匹配。所以使用save()函數實現更新操作,則必須提供"_id"字段數據。

       

      save()函數的語法是:

      db.集合名稱.save(

          <document>

      );

       

      參數document代表要修改的文檔內容,要求必須提供"_id"字段數據。

      使用save()函數實現更新操作:

      db.col.save(

          {

              "_id" : ObjectId("5d0207e460ad10791be757d2"),

              "title" : "MongoDB 教程",

              "description" : "MongoDB 是一個 Nosql 數據庫",

              "by" : "北京尚學堂",

              "tags" : [

                  "mongodb",

                  "NoSQL"

              ],

              "likes" : 100

          }

      )

       

      結果:

       

      (二) 覆蓋更新

      通過update方法來更新一個完整的文檔:

      db.col.update(

          {"title" : "MongoDB 教程"},

          {

              "title" : "MongoDB 教程",

              "description" : "MongoDB 是一個 Nosql 數據庫",

              "by" : "北京尚學堂",

              "likes" : 100

          }

      )

      結果:

       

      posted @ 2022-05-08 15:23  喻聰  閱讀(497)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久精品夜夜夜夜夜久久| 田林县| 少妇人妻激情乱人伦| 2019亚洲午夜无码天堂| 浓毛老太交欧美老妇热爱乱| 久久精品国产一区二区三区| 国产久免费热视频在线观看 | 欧美做受视频播放| 在线视频中文字幕二区| 久久一本人碰碰人碰| 国产桃色在线成免费视频| 伊人久久精品无码麻豆一区| 亚洲色最新高清AV网站| 日本中文一二区有码在线| 丰满少妇高潮惨叫久久久| 亚洲国产区男人本色| 国产精品国三级国产av| 国产va在线观看免费| 色www永久免费视频| 精品久久久久中文字幕APP| 不卡在线一区二区三区视频| 久久成人影院精品777| 国产一区二区亚洲av| 国产一区日韩二区三区| 亚洲国内精品一区二区| 精品久久久久无码| 免费现黄频在线观看国产| 国内精品伊人久久久影视| 亚洲一区二区三区四区| 韩国精品一区二区三区在线观看| 一二三四日本高清社区5| 2019亚洲午夜无码天堂| 麻花传媒在线观看免费| 久草网视频在线观看| 国产一区二区三区禁18| 亚洲国产成人极品综合| 九九热在线免费视频播放| 精品国产成人国产在线观看| 日本中文字幕亚洲乱码| 国产美女久久精品香蕉| 国产在线观看免费观看|