📜  Python MongoDB-更新(1)

📅  最后修改于: 2023-12-03 15:04:06.314000             🧑  作者: Mango

Python MongoDB-更新

介绍

在 MongoDB 中,更新数据可以通过 update_oneupdate_many 方法实现。本文将介绍如何在 Python 中更新 MongoDB 数据库。

前提条件

在开始学习本文内容前,请确保您已经完成了以下任务:

  1. 安装了 Python 3.x。
  2. 安装了 PyMongo 驱动程序。
  3. 安装了 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_oneupdate_manybulk_write 方法更新非关系型数据库,同时也掌握了 MongoDB 更新的高级用法。