当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python MongoDB Update_one()用法及代码示例


MongoDB 是一个 cross-platform document-oriented 和一个非关系(即 NoSQL)数据库程序。它是一个开源文档数据库,以键值对的形式存储数据。

首先创建一个我们执行 update_one() 操作的数据库:


# importing Mongoclient from pymongo
from pymongo import MongoClient 
   
try: 
    conn = MongoClient()  # Making coonection
  
except: 
    print("Could not connect to MongoDB") 
   
# database 
db = conn.database 
   
# Created or Switched to collection
# names:GeeksForGeeks
collection = db.GeeksForGeeks 
   
# Creating Records:
record1 = { "appliance":"fan",
           "quantity":10,
           "rating":"3 stars",
           "company":"havells"} 
record2 = { "appliance":"cooler", 
           "quantity":15,
           "rating":"4 stars",
           "company":"symphony"} 
record3 = { "appliance":"ac",
           "quantity":20,
           "rating":"5 stars",
           "company":"voltas"} 
record4 = { "appliance":"tv",
           "quantity":12,
           "rating":"3 stars",
           "company":"samsung"} 
   
# Inserting the Data 
rec_id1 = collection.insert_one(record1) 
rec_id2 = collection.insert_one(record2) 
rec_id3 = collection.insert_one(record3) 
rec_id4 = collection.insert_one(record4)
   
# Printing the data inserted 
print("The data in the database is:")
cursor = collection.find() 
for record in cursor: 
    print(record) 

输出:

python-mongodb-update-one-1

MongoDB shell :



python-update-one-mongodb-1

updateOne()

它是一个函数,我们可以通过它更新 MongoDB 数据库或集合中的记录。该方法主要关注我们传递的两个参数,一个是定义要更新哪个文档的查询(即过滤器)对象,第二个是定义文档新值的对象(即 new_values),其余参数是可选的,我们将在语法部分讨论。此函数查找与查询匹配的第一个文档,并使用定义文档新值的对象对其进行更新,即根据过滤器更新集合中的单个文档。
用法:

collection.update_one(filter, new_values, upsert=False, bypass_document_validation=False, collat​​ion=None, array_filters=None, session=None)

Parameters:

  • ‘filter’:与要更新的文档匹配的查询。
  • ‘new_values’:适用的修改。
  • ‘upsert’(可选):如果是 “True”,则在没有文档与过滤器匹配时执行插入。
  • ‘bypass_document_validation’(可选):如果是 “True”,则允许写入文档级验证的 opt-out。默认值为 “False”。
  • ‘collation’(可选):类的实例:‘~pymongo.collat​​ion.Collat​​ion’。此选项仅在 MongoDB 3.4 及更高版本上受支持。
  • ‘array_filters’(可选):指定更新应应用哪些数组元素的过滤器列表。需要 MongoDB 3.6+。
  • ‘session’(可选):一个类:'~pymongo.client_session.ClientSession'。

范例1:在此示例中,我们将风扇数量从 10 更新为 25。


# importing Mongoclient from pymongo
from pymongo import MongoClient 
  
conn = MongoClient('localhost', 27017) 
# database 
db = conn.database 
  
# Created or Switched to collection
# names:GeeksForGeeks
collection = db.GeeksForGeeks
  
# Updating fan quantity form 10 to 25.
filter = { 'appliance':'fan' }
  
# Values to be updated.
newvalues = { "$set":{ 'quantity':25 } }
  
# Using update_one() method for single 
# updation.
collection.update_one(filter, newvalues) 
  
# Printing the updated content of the 
# database
cursor = collection.find()
for record in cursor: 
    print(record) 

输出:

python-momgodb-update-one-2

MongoDB shell :



python-mongodb-update-one-3

范例2:在本例中,我们使用 update_one() 将电视公司名称从 ‘samsung’ 更改为 ‘sony’:


# importing Mongoclient from pymongo
from pymongo import MongoClient 
  
  
conn = MongoClient('localhost', 27017) 
  
# database 
db = conn.database 
  
# Created or Switched to collection 
# names:GeeksForGeeks
collection = db.GeeksForGeeks
  
# Updating the tv company name from
# 'samsung' to 'sony'.
filter = { 'appliance':'tv' }
  
# Values to be updated.
newvalues = { "$set":{ 'company':"sony" } } 
  
# Using update_one() method for single updation.
collection.update_one(filter, newvalues) 
  
# Printing the updated content of the database
cursor = collection.find()
for record in cursor: 
    print(record) 

输出:

python-mongodb-update-one-5

MongoDB shell :
python-mongodb-update-one-5

注意:“$set” 运算符将字段的值替换为指定的值。如果该字段不存在,则 “$set” 将添加具有指定值的新字段,前提是新字段不违反类型约束。




相关用法


注:本文由纯净天空筛选整理自VishwashVishwakarma大神的英文原创作品 Python MongoDB – Update_one()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。