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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mongo系列之update

發布時間:2023/12/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongo系列之update 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 前言
  • 2. update()
  • 3. updateOne()和updateMany()
    • 3.1 writeConcern參數使用的例子
    • 3.2 collation參數使用的例子
    • 3.3 arrayFilters 參數的例子
  • 4. replaceOne()
  • 5. 更新操作符
  • 6. 參考文獻

1. 前言

db.xx.update():更新一條或多條,通過multi參數控制。
db.xx.updaetOne():更新一條。
db.xx.updateMany():更新多條。

2. update()

db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document>} )# 參數解釋; query : update的查詢條件,類似sql update查詢內where后面的。 update : update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set后面的 upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。 multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。 writeConcern :可選,拋出異常的級別。

關于writeConcern參數使用的例子:

# 在writeConcern這個參數中制定了w 為 majority, wtimeout為 100:try {db.restaurant.updateOne({ "name" : "Pizza Rat's Pizzaria" },{ $inc: { "violations" : 3}, $set: { "Closed" : true } },{ w: "majority", wtimeout: 100 }); } catch (e) {print(e); }# 如果主服務器和至少一個輔助服務器在100毫秒內確認每個寫操作,則返回:{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }# 如果確認花費的時間超過了wtimeout限制,則會引發以下異常:WriteConcernError({"code" : 64,"errInfo" : {"wtimeout" : true},"errmsg" : "waiting for replication timed out" }) :

3. updateOne()和updateMany()

在3.2之后的版本中,加入了一些新的方法。例如updateOne(),updateMany()等。updateOne()和updateMany()的用法都是一樣的,只不過前者只更新符合條件的一個文檔,后者更新符合條件的所有文檔。

db.collection.updateMany(<filter>,<update>,{upsert: <boolean>,writeConcern: <document>,collation: <document>,arrayFilters: [ <filterdocument1>, ... ]} )# 參數解釋; filter: update的查詢條件,類似sql update查詢內where后面的。 update: update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set后面的。 upsert: 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。 writeConcern: 可選,拋出異常的級別。 collation: 可選的。指定排序規則。集合允許用戶在字符串比較中指定特定的語言規則,例如字母大寫和重音符號的規則。 arrayFilters: 可選的。 數組過濾條件,用于確定數組中那些元素需要更新。

3.1 writeConcern參數使用的例子

關于writeConcern參數使用的例子與上面的update中該參數的使用是一致的。

3.2 collation參數使用的例子

Collation Locales and Default Parameters
假設數據庫中有一個mycoll集合,集合中有如下文檔:

{ _id: 1, category: "café", status: "A" } { _id: 2, category: "cafe", status: "a" } { _id: 3, category: "cafE", status: "a" }

在collation參數中進行了如下操作:

db.myColl.updateOne({ category: "cafe" },{ $set: { status: "Updated" } },{ collation: { locale: "fr", strength: 1 } } );

3.3 arrayFilters 參數的例子

準備如下數據:

db.students.insert([{ "_id" : 1, "grades" : [ 95, 92, 90 ] },{ "_id" : 2, "grades" : [ 98, 100, 102 ] },{ "_id" : 3, "grades" : [ 95, 110, 100 ] } ]) //在<update>中,使用$[<identifier>]運算符來定義標識符,然后在數組過濾器中引用該標識符。 如下面所使用的element。 db.students.update({ grades: { $gte: 100 } },{ $set: { "grades.$[element]" : 100 } },{multi: true,arrayFilters: [ { "element": { $gte: 100 } } ]} )

更新后結果:

{ "_id" : 1, "grades" : [ 95, 92, 90 ] } { "_id" : 2, "grades" : [ 98, 100, 100 ] } { "_id" : 3, "grades" : [ 95, 100, 100 ] }

4. replaceOne()

替換文檔。

db.collection.replaceOne(<filter>,<replacement>,{upsert: <boolean>,writeConcern: <document>,collation: <document>} )

下面的例子對 users 集合使用 db.collection.replaceOne() 方法將通過過濾條件 name 等于 “sue” 匹配到的 第一個 文檔替換為新文檔:

db.users.replaceOne({ name: "abc" },{ name: "amy", age: 34, type: 2, status: "P", favorites: { "artist": "Dali", food: "donuts" } } )

其余參數的使用與updateOne()/updateMany()相同。

5. 更新操作符

操作符描述
字段
$currentDate將字段的值設置為當前日期(日期或時間戳)。
$inc將字段的值增加指定的數值。可以同時寫多個字段增加/減少多個指定的數值。
$min僅當指定值小于現有字段值時才更新該字段。
$max僅當指定值大于現有字段值時才更新該字段。
$mul將字段的值乘以指定的數量。
$rename重命名字段名。
$set設置文檔中字段的值。
$setOnInsert如果更新導致插入文檔,則設置字段的值。 對修改現有文檔的更新操作沒有影響。
$unset從文檔中刪除指定的字段。
數組
$充當占位符,以更新與查詢條件匹配的第一個元素。
$[]充當占位符,以更新匹配查詢條件的文檔的數組中的所有元素。
$[]充當占位符,以更新與查詢條件匹配的文檔的所有與arrayFilters條件匹配的元素。
$addToSet僅當元素不存在于集合中時才將它們添加到數組中。
$pop刪除數組的第一項或最后一項。
$pull刪除所有與指定查詢匹配的數組元素。
$push向數組中添加一項。
$pullAll從數組中刪除所有匹配的值。
修飾符
$each修改$ push和$ addToSet運算符以附加多項以進行數組更新。
$position修改$push運算符,以指定要添加元素的數組中的位置。
$slice修改$push運算符以限制更新數組的大小。
$sort修改$push運算符以對存儲在數組中的文檔重新排序。
$bit執行整數值的按位AND,OR和XOR(異或)更新。

6. 參考文獻

[1] MongoDB 中文文檔
[2] MongoDB 官方文檔
[3] mongoDB 中文社區
[4] MongoDB update 更新命令匯總
[5] mongodb中對字符串按照數值來排序【collation】
[6] Collation Locales and Default Parameters

總結

以上是生活随笔為你收集整理的Mongo系列之update的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。