当我们在MongoDB中需要修改某些文档的内容,可以使用Python的PyMongo库提供的update_one()
和update_many()
方法来完成。以下示例将教你如何对单条或多条文档进行更新。
1. 更新单条文档 (update_one)
如果你只想更新符合条件的第一条文档,可以使用update_one()
。示例:将地址"Valley 345"
改为"Canyon 123"
:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
myquery = { "address": "Valley 345" }
newvalues = { "$set": { "address": "Canyon 123" } }
mycol.update_one(myquery, newvalues)
# 查看更新后的结果
for x in mycol.find():
print(x)
注意:如果有多条文档匹配myquery
,也只会更新其中第一条。
2. 更新多条文档 (update_many)
当你想一次性更新所有符合条件的文档,就需要用update_many()
。下面示例将地址以“S”开头的文档中name
设置为"Minnie"
:
myquery = { "address": { "$regex": "^S" } }
newvalues = { "$set": { "name": "Minnie" } }
result = mycol.update_many(myquery, newvalues)
print(result.modified_count, "documents updated.")
上面代码返回modified_count
,表示成功更新的文档数量。
提示
- 更新操作需要写“运算符”
$set
,否则会覆盖整个文档。 - 如果要部分字段自增或修改数组,可使用其他更新运算符如
$inc
、$push
等。 - 在复杂查询中结合
regex
或其他运算符(如$gt
,$lt
),可灵活定位文档。
通过以上操作,你即可在Python里使用PyMongo对MongoDB集合的文档进行单条或批量更新,满足多种业务需求。