MongoDB的update_one()函数介绍
MongoDB中的update_one()函数是用于更新文档中的一条记录。它只会更新符合筛选条件的第一条记录,即使有多条记录符合筛选条件。
update_one()函数的语法格式如下:
collection.update_one(filter, update, upsert=False, bypass_document_validation=False)
其中,filter参数用于指定筛选条件,update参数用于指定要更新的值。
update_one()函数使用方法的完整攻略
我们来看一下update_one()函数的完整使用攻略:
步骤1:导入pymongo模块
import pymongo
步骤2:连接MongoDB数据库
client = pymongo.MongoClient("mongodb://localhost:27017/")
步骤3:选择数据库和集合
db = client['mydatabase']
collection = db['mycollection']
步骤4:设置要更新的筛选条件和更新内容
myquery = { "name": "John" }
newvalues = { "$set": { "address": "Canyon 123" } }
步骤5:使用update_one()函数更新数据
result = collection.update_one(myquery, newvalues)
print(result.modified_count, "记录已修改")
如果找到了符合条件的记录,必须使用$set操作符来指定要更新的字段和值,否则将会把整个记录替换掉。更新结果会返回一个UpdateResult对象,该对象包含更新的状态信息。
在实际应用中,我们可以在条件不满足时插入一个新的文档设置为True(upsert=True),或者在修改文档时忽略文档校验。下面是一个包含了这些参数的update_one()函数的完整写法示例:
myquery = { "name": "John" }
newvalues = { "$set": { "address": "Canyon 123" } }
result = collection.update_one(myquery, newvalues, upsert=True, bypass_document_validation=True)
print(result.modified_count, "记录已修改")
实例演示:
假如我们有一个mycollection集合,内部包含着以下文档:
{ "_id": 1, "name": "Jack", "age": 20, "city": "Shanghai" }
{ "_id": 2, "name": "Tony", "age": 19, "city": "Shanghai" }
{ "_id": 3, "name": "John", "age": 22, "city": "Beijing" }
{ "_id": 4, "name": "David", "age": 19, "city": "Shanghai" }
示例一
现在,我们想要将name为John的文档的address从NULL更新为Shanghai,可以这样写:
myquery = { "name": "John" }
newvalues = { "$set": { "address": "Shanghai" } }
result = collection.update_one(myquery, newvalues)
print(result.modified_count, "记录已修改")
运行结果为:
1 记录已修改
此时,mycollection的文档已经变成了:
{ "_id": 1, "name": "Jack", "age": 20, "city": "Shanghai" }
{ "_id": 2, "name": "Tony", "age": 19, "city": "Shanghai" }
{ "_id": 3, "name": "John", "age": 22, "city": "Beijing", "address": "Shanghai" }
{ "_id": 4, "name": "David", "age": 19, "city": "Shanghai" }
可以看到,前三个字段与原记录一致,只是在第三条记录中添加了一个新的address字段。
示例二
假设我们现在要将年龄为19的人的年龄全部修改为20,可以这样写:
myquery = { "age": 19 }
newvalues = { "$set": { "age": 20 } }
result = collection.update_one(myquery, newvalues)
print(result.modified_count, "记录已修改")
运行结果为:
1 记录已修改
此时,mycollection的文档已经变成了:
{ "_id": 1, "name": "Jack", "age": 20, "city": "Shanghai" }
{ "_id": 2, "name": "Tony", "age": 19, "city": "Shanghai" }
{ "_id": 3, "name": "John", "age": 22, "city": "Beijing", "address": "Shanghai" }
{ "_id": 4, "name": "David", "age": 20, "city": "Shanghai" }
可以看到,符合条件的文档中只有一条被修改了,而其他的文档都保持不变。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解MongoDB的update_one()函数:更新集合中的一个文档 - Python技术站