MongoDB的update_many()函数用于同时更新多个文档,其作用是在符合筛选条件的文档中更新指定字段的值。
使用方法:
update_many(filter, update, upsert=False)
其中,filter为筛选条件,类型为字典;update为更新操作,类型为字典;upsert为可选参数,表示如果没有符合筛选条件的文档,是否创建一个新文档(默认为False)。
实例1:更新所有学员信息中的英语成绩为90分
假设有一张学生信息的集合,包含学生姓名和考试成绩等字段,使用update_many()函数可以很容易地将所有学员的英语成绩更新为90分(假设英语成绩的字段名为english):
import pymongo
client = pymongo.MongoClient()
db = client['test']
collection = db['student']
filter = {} # 筛选条件为空,表示所有文档都要更新
update = {'$set': {'english': 90}} # 更新字段为english,将其值设为90
result = collection.update_many(filter, update)
print(result.modified_count, 'documents updated.')
在上述代码中,我们首先建立了与MongoDB的连接,选择了test数据库和student集合。然后使用空字典将所有文档筛选出来,使用'$set'操作将english字段的值改为90。函数返回值result是一个UpdateResult对象,包含了修改的文档数量,我们将其打印即可。
实例2:将所有姓名为小明的学生的语文成绩增加10分
除了可以一次性更新所有文档,update_many()函数也可以用于有条件地更新文档。下面的代码将所有姓名为小明的学生的语文成绩增加10分:
import pymongo
client = pymongo.MongoClient()
db = client['test']
collection = db['student']
filter = {'name': '小明'} # 筛选条件为姓名为小明的文档
update = {'$inc': {'chinese': 10}} # 对语文成绩增加10分
result = collection.update_many(filter, update)
print(result.modified_count, 'documents updated.')
在上述代码中,我们使用了字典作为筛选条件,而且仅针对姓名为小明的学生进行了更新操作。此外,使用了'$inc'操作对语文成绩字段进行了增加操作。
本文链接:http://task.lmcjl.com/news/4949.html