La función find_one_and_update() realmente encuentra y actualiza un documento MongoDB . Aunque por defecto, esta función devuelve el documento en su forma original y para devolver el documento actualizado, se debe implementar return_document en el código.
Sintaxis:
coll.find_one_and_update(filter, update, options)Parámetros:
- col-colección en MongoDB
- filtro-criterios para encontrar el documento que necesita ser actualizado
- actualización: las operaciones que deben implementarse para actualizar el documento
- aquí se pueden usar opciones de proyección o upsert
- proyección: un mapeo que informa sobre qué campos se incluyen y excluyen, es 1/VERDADERO para incluir un campo y 0/FALSO para excluir
- upsert- para insertar un nuevo documento si no se encuentra ningún archivo con los criterios mencionados upsert es VERDADERO
- return_document: si ReturnDocument.ANTES (el valor predeterminado), devuelve el documento original antes de que fuera reemplazado, o Ninguno si no coincide ningún documento. Si ReturnDocument.AFTER, devuelve el documento reemplazado o insertado.
Ejemplo 1: Base de datos de muestra:
Python3
from pymongo import MongoClient from pymongo import ReturnDocument # Create a pymongo client client = MongoClient('localhost', 27017) # Get the database instance db = client['GFG'] # Create a collection doc = db['Student'] print(doc.find_one_and_update({'name':"Raju"}, { '$set': { "Branch" : 'ECE'} }, return_document = ReturnDocument.AFTER))
Producción:
{'_id': 5, 'name': 'Raju', 'Roll No': '1005', 'Branch': 'ECE'}
Ejemplo 2:
Python3
from pymongo import MongoClient from pymongo import ReturnDocument # Create a pymongo client client = MongoClient('localhost', 27017) # Get the database instance db = client['GFG'] # Create a collection doc = db['Student'] print(# Increasing marks of Ravi by 10 doc.find_one_and_update({'name': "Raju"}, { '$set': { "Branch" : 'CSE'} }, projection = { "name" : 1, "Branch" : 1 }, return_document = ReturnDocument.AFTER))
Producción:
{'_id': 5, 'name': 'Raju', 'Branch': 'CSE'}