日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《MongoDB入门教程》第14篇 CRUD之更新文档

發(fā)布時間:2024/3/26 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《MongoDB入门教程》第14篇 CRUD之更新文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本篇我們將會介紹如何使用集合的 updateOne() 和 updateMany() 方法更新文檔。

updateOne() 方法

updateOne() 方法可以更新滿足條件的單個文檔,語法如下:

db.collection.updateOne(filter, update, options)

其中,

  • filter 用于指定一個查詢條件。如果多個文檔都滿足條件,updateOne() 只會更新第一個滿足條件的文檔。如果指定一個空文檔({})作為查詢條件,updateOne() 將會更新集合中返回的第一個文檔。
  • update 用于指定更新操作。
  • options 參數(shù)用于指定一些更新選項,本文不涉及相關(guān)內(nèi)容。

updateOne() 方法將會返回一個結(jié)果文檔,包括但不限于以下字段:

  • matchedCount 字段返回了滿足條件的文檔數(shù)量。
  • modifiedCount 字段返回了被更新的文檔數(shù)量。對于 updateOne() 方法,結(jié)果為 0 或者 1。

$set 操作符

$set 操作符用于替換指定字段的值,語法如下:

{ $set: { <field1>: <value1>, <field2>: <value2>, ...}}

如果指定的字段不存在,$set 操作符將會為文檔增加一個新的字段,只要新的字段不違法類型約束。

如果指定字段時使用了點符合,例如 embededDoc.field,同時字段 field 不存在,$set 操作符將會創(chuàng)建一個嵌入式文檔。

updateOne() 示例

接下來的示例將會使用以下 products 集合:

db.products.insertMany([{ "_id" : 1, "name" : "xPhone", "price" : 799, "releaseDate": ISODate("2011-05-14"), "spec" : { "ram" : 4, "screen" : 6.5, "cpu" : 2.66 },"color":["white","black"],"storage":[64,128,256]},{ "_id" : 2, "name" : "xTablet", "price" : 899, "releaseDate": ISODate("2011-09-01") , "spec" : { "ram" : 16, "screen" : 9.5, "cpu" : 3.66 },"color":["white","black","purple"],"storage":[128,256,512]},{ "_id" : 3, "name" : "SmartTablet", "price" : 899, "releaseDate": ISODate("2015-01-14"), "spec" : { "ram" : 12, "screen" : 9.7, "cpu" : 3.66 },"color":["blue"],"storage":[16,64,128]},{ "_id" : 4, "name" : "SmartPad", "price" : 699, "releaseDate": ISODate("2020-05-14"),"spec" : { "ram" : 8, "screen" : 9.7, "cpu" : 1.66 },"color":["white","orange","gold","gray"],"storage":[128,256,1024]},{ "_id" : 5, "name" : "SmartPhone", "price" : 599,"releaseDate": ISODate("2022-09-14"), "spec" : { "ram" : 4, "screen" : 5.7, "cpu" : 1.66 },"color":["white","orange","gold","gray"],"storage":[128,256]}])

示例一:更新單個文檔

以下示例使用 updateOne() 方法更新 _id 等于 1 的文檔中的 price 字段:

db.products.updateOne({_id: 1 }, {$set: {price: 899} })

其中,

  • { _id : 1 } 是查找文檔的條件。
  • { $set: { price: 899 } } 指定了更新操作,利用 $set 操作符將 price 字段修改為 899。

示例返回的結(jié)果如下:

{acknowledged: true,insertedId: null,matchedCount: 1,modifiedCount: 1,upsertedCount: 0 }

在返回結(jié)果中,matchedCount 代表了滿足查詢條件的文檔數(shù)量(1),modifiedCount 代表了被修改的文檔數(shù)量(1)。

我們可以使用 findOne() 方法驗證修改后的文檔內(nèi)容:

db.products.findOne({ _id: 1 }, { name: 1, price: 1 }){ _id: 1, name: 'xPhone', price: 899 }

示例二:更新第一個匹配的文檔

以下查詢返回了價格等于 899 的所有產(chǎn)品:

db.products.find({ price: 899 }, { name: 1, price: 1 })[{ _id: 1, name: 'xPhone', price: 899 },{ _id: 2, name: 'xTablet', price: 899 },{ _id: 3, name: 'SmartTablet', price: 899 } ]

以下示例使用 updateOne() 方法更新價格等于 899 的第一個文檔:

db.products.updateOne({ price: 899 }, { $set: { price: null } }){acknowledged: true,insertedId: null,matchedCount: 1,modifiedCount: 1,upsertedCount: 0 }

按照默認(rèn)的返回順序,第一個價格等于 899 的產(chǎn)品 _id 等于 1,它的價格被更新為 null:

db.products.find({ _id: 1}, { name: 1, price: 1 })[ { _id: 1, name: 'xPhone', price: null } ]

示例三:更新嵌入式文檔

以下查詢返回了 _id 等于 4 的文檔:

db.products.find({ _id: 4 }, { name: 1, spec: 1 })[{_id: 4,name: 'SmartPad',spec: { ram: 8, screen: 9.7, cpu: 1.66 }} ]

下面的示例使用 updateOne() 方法更新該文檔中的嵌入式文檔 spec 的 ram、screen 以及 cpu 字段:

db.products.updateOne({_id: 4 }, {$set: {"spec.ram": 16,"spec.screen": 10.7,"spec.cpu": 2.66} })

操作返回的結(jié)果如下:

{acknowledged: true,insertedId: null,matchedCount: 1,modifiedCount: 1,upsertedCount: 0 }

再次查詢文檔中的內(nèi)容:

db.products.find({ _id: 4 }, { name: 1, spec: 1 })[{_id: 4,name: 'SmartPad',spec: { ram: 16, screen: 10.7, cpu: 2.66 }} ]

示例四:更新數(shù)組元素

以下示例使用 updateOne() 方法更新文檔(_id: 4)中數(shù)組字段 storage 的第一個和第二個元素:

db.products.updateOne({ _id: 4}, {$set: {"storage.0": 16,"storage.1": 32}} )

返回結(jié)果如下:

{acknowledged: true,insertedId: null,matchedCount: 1,modifiedCount: 1,upsertedCount: 0 }

再次查詢該文檔中的內(nèi)容:

db.products.find({ _id: 4 }, { name: 1, storage: 1 });[ { _id: 4, name: 'SmartPad', storage: [ 16, 32, 1024 ] } ]

updateMany() 方法

updateMany() 方法可以更新滿足條件的所有文檔,語法如下:

db.collection.updateMany(filter, update, options)

其中,

  • filter 用于指定一個查詢條件。如果指定一個空文檔({})作為查詢條件,將會更新集合中的全部文檔。
  • update 用于指定更新操作。
  • options 參數(shù)用于指定一些更新選項,本文不涉及相關(guān)內(nèi)容。

updateMany() 方法將會返回一個結(jié)果文檔,包括但不限于以下字段:

  • matchedCount 字段返回了滿足條件的文檔數(shù)量。
  • modifiedCount 字段返回了被更新的文檔數(shù)量。

updateMany() 同樣使用 $set 操作符執(zhí)行更新操作。

updateMany() 示例

示例一:更新多個文檔

以下示例使用 updateMany() 方法更新價格為 899 的所有產(chǎn)品:

db.products.updateMany({ price: 899}, { $set: { price: 895 }} )

其中,

  • { price : 899 } 指定了查找文檔的條件。
  • { $set: { price: 895} } 指定了更新操作,利用 $set 操作符將 price 字段修改為 895。

查詢返回的結(jié)果如下:

{acknowledged: true,insertedId: null,matchedCount: 2,modifiedCount: 2,upsertedCount: 0 }

在返回結(jié)果中,matchedCount 代表了滿足查詢條件的文檔數(shù)量(2),modifiedCount 代表了被更新的文檔數(shù)量(2)。

再次通過價格(895)查詢產(chǎn)品:

db.products.find({price: 895 }, {name: 1,price: 1 })

查詢返回的結(jié)果如下:

[{ _id: 2, name: 'xTablet', price: 895 },{ _id: 3, name: 'SmartTablet', price: 895 } ]

示例二:更新嵌入式文檔

以下示例使用 updateMany() 更新價格大于 700 的產(chǎn)品中嵌入式文檔 spec 的 ram、screen 以及 cpu 字段:

db.products.updateMany({price: { $gt: 700} }, {$set: {"spec.ram": 32,"spec.screen": 9.8,"spec.cpu": 5.66} })

返回結(jié)果顯示成功更新 3 個文檔:

{acknowledged: true,insertedId: null,matchedCount: 3,modifiedCount: 3,upsertedCount: 0 }

示例三:更新數(shù)組元素

以下示例使用 updateMany() 方法更新文檔(_id 等于 1、2、3)中的數(shù)組字段 storage 的第一個元素和第二個元素:

db.products.updateMany({_id: {$in: [1, 2, 3]} }, {$set: {"storage.0": 16,"storage.1": 32} })

返回結(jié)果如下:

{acknowledged: true,insertedId: null,matchedCount: 3,modifiedCount: 3,upsertedCount: 0 }

總結(jié)

以上是生活随笔為你收集整理的《MongoDB入门教程》第14篇 CRUD之更新文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www久久久久 | 国产原创在线视频 | 日日碰日日摸 | 国内偷拍久久 | 午夜色婷婷 | 99久热在线精品996热是什么 | 色草在线| 少女情窦初开的第4集在线观看 | wwwxxx欧美| 国产无码日韩精品 | 爽爽淫人| 欧美三日本三级少妇三级99观看视频 | 在线观看国产区 | fc2ppv在线观看 | 在线中文字日产幕 | a免费视频 | 日本乱码一区二区 | 越南黄色一级片 | 亚洲激情在线视频 | 琪琪av在线| 亚洲福利电影网 | 男女啪动最猛动态图 | 久久久久亚洲av无码专区 | 亚洲人妻一区二区 | 国产精品日韩欧美大师 | 亚洲熟妇国产熟妇肥婆 | 日本aa在线观看 | 亚洲第一字幕 | 免费av入口 | 精品免费视频 | 中文字幕观看视频 | 亚洲一区二区国产精品 | 亚洲毛片在线播放 | 国产一区二区精彩视频 | 玖草影院| 99热超碰 | 国产麻豆一精品一男同 | 欧美第一页草草影院 | 日韩一区二区三区在线免费观看 | 黄色网址www | 久久久久免费看 | 久久综合av | 熟女少妇在线视频播放 | 97久久免费视频 | 日韩尤物 | 亚洲AV成人无码电影在线观看 | 在线伊人网 | 午夜丰满寂寞少妇精品 | 一二三区在线视频 | 天天操狠狠操夜夜操 | 青青视频免费观看 | 成人做爰9片免费视频 | 免费欧美视频 | 天堂va在线 | 国产69久久精品成人看 | 成人在线观看免费高清 | 欧美一二三区视频 | 视频在线一区二区 | 久久久国产网站 | 国产又黄又大又爽 | 中国丰满熟妇xxxx性 | 欧美日韩在线免费观看 | 国产亚洲精久久久久久无码苍井空 | 96国产精品 | 爱爱综合 | 中文字幕码精品视频网站 | 特级淫片裸体免费看 | 一区二区三区福利 | 国产精品熟女久久久久久 | 香蕉久久一区二区三区 | 亚洲精品国产欧美在线观看 | 亚洲永久视频 | 国产成人综合在线 | 76少妇精品导航 | a毛片基地| 在线观看成人一区 | 香蕉国产片 | 狠狠干狠狠插 | 99久久久久成人国产免费 | 黑人巨茎大战欧美白妇 | 日韩视频在线观看一区 | 奇米网888| 免费久久久| 免费欧美 | www.一级片 | 91一区二区三区在线 | 一区二区三区 欧美 | 亚洲一区二区三区四区视频 | 新婚之夜玷污岳丰满少妇在线观看 | 小嫩女直喷白浆 | 免费一级黄色 | 精品国产视频一区二区三区 | 亚洲女人在线 | 久久调教 | 中文字字幕第183页 欧美特级一级片 | 亚洲精品国产成人久久av盗摄 | 黄色爱爱视频 | 国产在线www| 尤物视频在线观看国产 |