Open In App

Python MongoDB - find_one_and_update Query

Last Updated : 04 Jul, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

find_one_and_update() method in PyMongo is used to find a single document, update it, and return the original or updated document. This is useful when you need to both modify and retrieve a document in one operation. You define a filter to match the document and specify the update using operators like $set.

Syntax

collection.find_one_and_update(filter, update, options)

Parameters:

  • filter (dict): A query that matches the document to update.
  • update (dict): The update operations to apply (e.g., using $set, $inc, etc.).
  • projection (dict, optional): Specifies the fields to return.
  • sort (list of tuples, optional): Determines which document to update if multiple match (e.g., [("field", pymongo.ASCENDING)]).
  • return_document (optional): Determines whether to return the updated document or the original. Use ReturnDocument.AFTER to return the updated one.
  • upsert (bool, optional): If True, inserts a new document if no match is found.
  • hint (optional): Index to use for the query.

Let's see some Examples to understand it better.

Sample Collection used in this Article:

python-mongodb-sample-database3

Example 1:

Python
from pymongo import MongoClient
from pymongo import ReturnDocument

client = MongoClient('localhost', 27017)

db = client['GFG']
doc = db['Student']

# Update Raju's branch to ECE and return the updated document
updated_doc = doc.find_one_and_update(
    {"_id": 5},  # You can also use {"name": "Raju"} since both are valid
    {"$set": {"Branch": "ECE"}},
    return_document=ReturnDocument.AFTER
)
print("Updated Document:")
print(updated_doc)

Output

findAndUpdate_output
Output of find_one_and_update Query

Explanation:

  • find_one_and_update() finds the document with _id: 5 and updates the "Branch" to "ECE".
  • "$set" operator is used to change only the "Branch" field.
  • ReturnDocument.AFTER returns the updated document.

Example 2: 

Python
from pymongo import MongoClient
from pymongo import ReturnDocument

client = MongoClient('localhost', 27017)
db = client['GFG']
doc = db['Student']

# Update Raju's Roll Number
updated_doc = doc.find_one_and_update(
    {'name': "Raju"},  
    {'$set': { "Roll No": "1010" }},  
    projection={ "name": 1, "Roll No": 1},  
    return_document=ReturnDocument.AFTER  
)
print("Updated Document:")
print(updated_doc)

Output

newupdate
Output of find_one_and_update Query

Explanation:

  • find_one_and_update() finds the document where "name" is "Raju" and updates his "Roll No" to "1010".
  • projection limits the returned fields to only "name" and "Roll No".
  • ReturnDocument.AFTER returns the document after the update.

Related Articles:


Next Article
Article Tags :
Practice Tags :

Similar Reads

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy