📅  最后修改于: 2023-12-03 15:04:06.314000             🧑  作者: Mango
在 MongoDB 中,更新数据可以通过 update_one
或 update_many
方法实现。本文将介绍如何在 Python 中更新 MongoDB 数据库。
在开始学习本文内容前,请确保您已经完成了以下任务:
要更新 MongoDB 中的单个文档,可以使用 update_one
方法。
以下是 update_one
方法的语法:
update_one(filter, update, upsert=False)
filter
参数是一个字典,用于定义更新的文档。例如,如果要更新 _id
为 1 的文档中的 name
属性,可以将 filter
设置为 { "_id": 1 }
。
update
参数也是一个字典,用于指定要更新的值。例如,如果要将 name
属性的值从 Tom
改为 Jerry
,可以将 update
设置为 { "$set": { "name": "Jerry" } }
。
upsert
参数是可选的,默认为 False
。如果将其设置为 True
,则在更新文档时,如果过滤器找不到匹配的文档,将会插入一条新文档。
以下是一个使用 update_one
方法更新单个文档的示例代码:
import pymongo
# 连接 MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 选择数据库
db = client["testdb"]
# 选择集合
col = db["testcol"]
# 定义过滤器和更新内容
myquery = { "_id": 1 }
newvalues = { "$set": { "name": "Jerry" } }
# 更新文档
result = col.update_one(myquery, newvalues)
# 输出更新的记录数
print(result.modified_count, "文档已更新")
要更新 MongoDB 中的多个文档,可以使用 update_many
方法。
以下是 update_many
方法的语法:
update_many(filter, update, upsert=False)
filter
参数是一个字典,用于定义更新的文档。例如,如果要更新 age
大于 18 的所有文档,可以将 filter
设置为 { "age": { "$gt": 18 } }
。
update
参数也是一个字典,用于指定要更新的值。例如,如果要将 name
属性的值从 Tom
改为 Jerry
,可以将 update
设置为 { "$set": { "name": "Jerry" } }
。
upsert
参数是可选的,默认为 False
。如果将其设置为 True
,则在更新文档时,如果过滤器找不到匹配的文档,将会插入一条新文档。
以下是一个使用 update_many
方法更新多个文档的示例代码:
import pymongo
# 连接 MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 选择数据库
db = client["testdb"]
# 选择集合
col = db["testcol"]
# 定义过滤器和更新内容
myquery = { "age": { "$gt": 18 } }
newvalues = { "$set": { "name": "Jerry" } }
# 更新文档
result = col.update_many(myquery, newvalues)
# 输出更新的记录数
print(result.modified_count, "文档已更新")
如果要一次更新多个文档中相同的属性,可以使用 bulk_write
方法。
以下是 bulk_write
方法的语法:
bulk_write(requests, ordered=True)
requests
参数是一个 BulkWriteOperation
对象的列表,用于指定要执行的更新操作。
以下是一个使用 bulk_write
方法批量更新数据的示例代码:
import pymongo
from pymongo import UpdateOne
# 连接 MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 选择数据库
db = client["testdb"]
# 选择集合
col = db["testcol"]
# 过滤器
myfilter = { "status": "A" }
# 更新内容
newvalue = { "$set": { "status": "B" } }
# 构造更新请求
update_requests = [UpdateOne(myfilter, newvalue) for i in range(3)]
# 执行批量更新
result = col.bulk_write(update_requests)
# 输出更新的记录数
print(result.modified_count, "文档已更新")
本文介绍了在 Python 中如何更新 MongoDB 数据库。通过学习本文,您现在应该已经学会了如何使用 update_one
、update_many
和 bulk_write
方法更新非关系型数据库,同时也掌握了 MongoDB 更新的高级用法。