Python MongoDB – Update_one()

13 Jan, 2022
MongoDB is a cross-platform document-oriented and a non relational (i.e NoSQL) database program. It is an open-source document database, that stores the data in the form of key-value pairs.First create a database on which we perform the update_one() operation:  
Python3
# importing Mongoclient from pymongofrom pymongo import MongoClient  try:    conn = MongoClient()  # Making connection except:    print("Could not connect to MongoDB")  # databasedb = conn.database  # Created or Switched to collection# names: GeeksForGeekscollection = 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 Datarec_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 insertedprint("The data in the database is:")cursor = collection.find()for record in cursor:    print(record)
Output : 
MongoDB Shell: 
 
It is a function by which we can update a record in a MongoDB database or Collection. This method mainly focuses on two arguments that we passed one is the query (i.e filter) object defining which document to update and the second is an object defining the new values of the document(i.e new_values) and the rest arguments are optional that we will discuss in the syntax section. This function finds the first document that matches with the query and update it with an object defining the new values of the document, i.e Updates a single document within the collection based on the filter. Syntax: 
collection.update_one(filter, new_values, upsert=False, bypass_document_validation=False, collation=None, array_filters=None, session=None)Parameters:  
‘filter’ : A query that matches the document to update.
‘new_values’ : The modifications to apply.
‘upsert’ (optional): If “True”, perform an insert if no documents match the filter.
‘bypass_document_validation’ (optional) : If “True”, allows the write to opt-out of document level validation. Default is “False”.
‘collation’ (optional) : An instance of class: ‘~pymongo.collation.Collation’. This option is only supported on MongoDB 3.4 and above.
‘array_filters’ (optional) : A list of filters specifying which array elements an update should apply. Requires MongoDB 3.6+.
‘session’ (optional) : a class:’~pymongo.client_session.ClientSession’.
 
Example 1: In this example, we are going to update the fan quantity from 10 to 25.  
Python3
# importing Mongoclient from pymongofrom pymongo import MongoClient conn = MongoClient('localhost', 27017)# databasedb = conn.database # Created or Switched to collection# names: GeeksForGeekscollection = 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# databasecursor = collection.find()for record in cursor:    print(record)
Output : 
MongoDB Shell: 
Example 2: In this example we are changing the tv company name from ‘samsung’ to ‘sony’ by using update_one():  
Python3
# importing Mongoclient from pymongofrom pymongo import MongoClient  conn = MongoClient('localhost', 27017) # databasedb = conn.database # Created or Switched to collection# names: GeeksForGeekscollection = 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 databasecursor = collection.find()for record in cursor:    print(record)
Output : 
MongoDB Shell:  
NOTE :The “$set” operator replaces the value of a field with the specified value. If the field does not exist, “$set” will add a new field with the specified value, provided that the new field does not violate a type constraint. 
rkbhola5
Python-mongoDB
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Read JSON file using Python
Adding new column to existing DataFrame in Pandas
Python map() function
How to get column names in Pandas dataframe
Different ways to create Pandas Dataframe
Enumerate() in Python
Read a file line by line in Python
How to Install PIP on Windows ?
Python String | replace()
Python OOPs Concepts