成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一日一技:在 MongoDB 中,如何批量更新不同數據為不同值?

運維 數據庫運維 MongoDB
update_one是更新第一條滿足查詢條件的數據;update_many是更新所有滿足查詢條件的數據。大家在使用update_many的時候,不知道有沒有想過一個問題:update_many會對所有滿足條件的文檔更新相同的字段。

[[406228]]

我們知道,當使用 Pymongo 更新MongoDB 字段的時候,我們有兩種常見的方法:

  1. handler.update_one({'name''value'}, {'$set': {'aa''bb'}}) 
  2. handler.update_many({'name''value'}, {'$set': {'aa''bb'}}) 

其中,update_one是更新第一條滿足查詢條件的數據;update_many是更新所有滿足查詢條件的數據。大家在使用update_many的時候,不知道有沒有想過一個問題:update_many會對所有滿足條件的文檔更新相同的字段。例如,對于上面第二行代碼,所有name字段為value的數據,在更新以后,新的數據的aa字段的值全都是bb。那么,有沒有辦法一次性把不同的字段更新成不同的數據呢?

例如,我們的 MongoDB 中有如下數據:

sid name sex result is_qualified
1 王曉一 80 true
2 張小二 69 false
3 劉小三 76 false
4 朱小四 75 true
5 馬小五 50 false
6 趙小六 77 true
7 錢小七 60 false
8 孫小八 68 false
9 李小九 98 true
10 周小十 61 false

假設這是一份成績表,一開始,要求男生不低于80分,女生不低于70分,is_qualified字段才會為True。后來改了計分規則,變成男生不低于90分,女生不低于60分,is_qualified就能為 True,否則為 False。所以現在需要批量更新數據。顯然,對男生而言,有一些原本為True的需要變成 False;對女生而言,有一些原本為 False 的,要變成 True。如果讓你直接使用update_many,你可能需要寫成兩條更新語句:

  1. handler.update_many({'sex''男''result': {'$lt': 90}}, {'$set': {'is_qualified'False}}) 
  2.  
  3. handler.update_many({'sex''女''result': {'$gte': 60}}, {'$set': {'is_qualified'True}}) 

那有沒有辦法只發一次請求,就同時更新兩組數據呢?其實方法也是有的,就是bulk_write:

  1. import pymongo 
  2.  
  3. handler = pymongo.MongoClient().test_db.test_col 
  4.  
  5. handler.bulk_write([ 
  6.   pymongo.UpdateMany({'sex''男''result': {'$lt': 90}}, {'$set': {'is_qualified'False}}), 
  7.   pymongo.UpdateMany({'sex''女''result': {'$gte': 60}}, {'$set': {'is_qualified'True}}) 
  8. ]) 

bulk_write接收一個列表作為參數。這個列表里面的每一個元素是一個pymongo.X對象,這里的 X 可能是InsertOne/InsertMany/DeleteOne/DeleteMany/UpdateOne/ UpdateMany……,基本上就是你想使用的對應操作的駝峰命名法形式。

這種方式,Pymongo 會在一次請求同時提交這兩組操作,減少網絡連接的時間消耗。

批量操作不僅支持UpdateOne,還支持各種其他操作,你可以閱讀Bulk Write Operations — PyMongo 3.11.4 documentation[1]。

參考資料

[1]Bulk Write Operations — PyMongo 3.11.4 documentation: https://pymongo.readthedocs.io/en/stable/examples/bulk.html

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2021-07-27 21:32:57

Python 延遲調用

2021-04-12 21:19:01

PythonMakefile項目

2021-06-08 21:36:24

PyCharm爬蟲Scrapy

2022-03-12 20:38:14

網頁Python測試

2021-10-15 21:08:31

PandasExcel對象

2025-05-28 03:15:00

Scrapy數據sleep

2020-12-11 06:30:00

工具分組DataFrame

2021-09-13 20:38:47

Python鏈式調用

2021-03-12 21:19:15

Python鏈式調用

2021-01-08 05:17:16

重復值JSON爬蟲

2022-06-28 09:31:44

LinuxmacOS系統

2023-10-28 12:14:35

爬蟲JavaScriptObject

2024-07-30 08:16:18

Python代碼工具

2024-07-30 08:11:16

2024-11-11 00:38:13

Mypy靜態類型

2021-05-08 19:33:51

移除字符零寬

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2022-08-26 09:34:19

單元測試代碼項目

2022-03-07 09:14:04

Selenium鼠標元素

2024-02-20 22:13:48

Python項目Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩久久久久久 | 在线免费观看黄网 | 国产高清在线精品一区二区三区 | 精品国产乱码久久久久久1区2区 | 日韩中文视频 | 亚洲精品乱码8久久久久久日本 | 羞羞视频网站在线观看 | 91色站| 日韩高清成人 | 亚洲一区中文字幕 | 久久黄色网 | 欧美日韩在线电影 | 日韩中文字幕在线视频 | 殴美一级片 | 久久久久久久电影 | 国产我和子的乱视频网站 | 热re99久久精品国产99热 | 懂色av蜜桃av | 啪啪免费网站 | 久久高清 | 久久久久精 | 91久久精品日日躁夜夜躁欧美 | 亚洲婷婷六月天 | 成人国产精品免费观看视频 | 久久国产精品久久 | 欧美精品在线一区二区三区 | 欧美国产亚洲一区二区 | 久久精品国产一区二区电影 | www.天天干.com | 成人影院一区二区三区 | 精品久久影院 | 亚洲一区二区免费电影 | 亚洲精品乱码久久久久久按摩观 | 亚洲激情自拍偷拍 | 国产精品视频偷伦精品视频 | 久久综合狠狠综合久久综合88 | 国产精品视频免费观看 | a在线视频观看 | 亚洲最大福利网 | 欧美激情精品久久久久久 | 久久av一区|