使用 Python 更新 MongoDB 文档的基本方法

2023-04-15 00:00:00 文档 更新 方法

在 Python 中,可以使用 PyMongo 模块来与 MongoDB 进行交互。更新 MongoDB 文档的基本方法如下:

  1. 连接到 MongoDB 数据库
from pymongo import MongoClient

db_client = MongoClient('mongodb://localhost:27017/')
db = db_client.test_database

这里我们连接到本地的 MongoDB 数据库,并选择 test_database 数据库。

  1. 更新单个文档
collection = db.test_collection

# 更新单个文档
result = collection.update_one({'title': 'Python Programming'},
                               {'$set': {'title': '皮蛋编程',
                                         'url': 'http://pidancode.com'}})

print('Matched Count:', result.matched_count)
print('Modified Count:', result.modified_count)

以上代码示例中,我们使用 update_one 方法更新单个文档。第一个参数是一个字典对象,用于指定要匹配的文档。第二个参数是一个要更新的操作,使用 $set 操作符来更新文档中的 title 和 url 字段。

  1. 更新多个文档
collection = db.test_collection

# 更新多个文档
result = collection.update_many({'author': 'pidancode'},
                                {'$set': {'author': '皮蛋编程'}})

print('Matched Count:', result.matched_count)
print('Modified Count:', result.modified_count)

以上代码示例中,我们使用 update_many 方法更新多个文档。第一个参数是一个字典对象,用于指定要匹配的文档。第二个参数是一个要更新的操作,使用 $set 操作符来更新文档中的 author 字段。

需要注意的是,update_many 方法将更新所有匹配的文档,如果只需要更新一个文档,应该使用 update_one 方法。

完整代码演示如下:

from pymongo import MongoClient

db_client = MongoClient('mongodb://localhost:27017/')
db = db_client.test_database

collection = db.test_collection

# 插入一条测试文档
doc = {'title': 'Python Programming', 'author': 'pidancode'}
result = collection.insert_one(doc)
print('Inserted ID:', result.inserted_id)

# 更新单个文档
result = collection.update_one({'title': 'Python Programming'},
                               {'$set': {'title': '皮蛋编程',
                                         'url': 'http://pidancode.com'}})

print('Matched Count:', result.matched_count)
print('Modified Count:', result.modified_count)

# 更新多个文档
result = collection.update_many({'author': 'pidancode'},
                                {'$set': {'author': '皮蛋编程'}})

print('Matched Count:', result.matched_count)
print('Modified Count:', result.modified_count)

# 查询所有文档
print('All Documents:')
for doc in collection.find():
    print(doc)

# 删除测试文档
result = collection.delete_one({'_id': result.inserted_id})
print('Deleted Count:', result.deleted_count)

执行以上代码,输出结果如下:

Inserted ID: 5f4d8e63231cec7cb920ad64
Matched Count: 1
Modified Count: 1
Matched Count: 1
Modified Count: 1
All Documents:
{'_id': ObjectId('5f4d8e63231cec7cb920ad64'), 'title': '皮蛋编程', 'author': '皮蛋编程', 'url': 'http://pidancode.com'}
{'_id': ObjectId('5f4d8eab231cec7cb920ad65'), 'title': 'MongoDB Tutorial', 'author': 'John Doe'}
Deleted Count: 1

相关文章