Python+MongoDB:更新集合中文档的基础操作

当我们在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集合的文档进行单条或批量更新,满足多种业务需求。