El método findOneAndUpdate() actualiza el primer documento coincidente de la colección que coincide con los criterios de selección. Si más de un documento coincide con los criterios de selección, solo se actualiza el primer documento coincidente. Cuando actualizamos el documento, el valor del campo _id permanece sin cambios. Este método devolverá el documento original, pero si queremos devolver el documento actualizado, debemos establecer el valor del parámetro returnNewDocument en verdadero. Toma tres parámetros, el primero es el criterio de selección, el segundo son los nuevos datos a actualizar, y los restantes son opcionales. Con este método también puede reemplazar documentos incrustados . También puede utilizar este método en transacciones de varios documentos.
Sintaxis:
db.colección.findOneAndUpdate(
criterio_selección: <documento>,
update_data: <documento>,
{
proyección: <documento>,
ordenar: <documento>,
maxTimeMS: <número>,
upsert: <booleano>,
devolverNuevoDocumento: <booleano>,
intercalación: <documento>,
arrayFilters: [ <filtrodocumento1>, … ]
})
Parámetros:
- El primer parámetro es el criterio de selección para la actualización. El tipo de este parámetro es documento.
- El segundo parámetro es un documento que se va a actualizar. El tipo de este parámetro es documento.
- El tercer parámetro es opcional.
Parámetros opcionales:
- proyección: El tipo de este parámetro es documento. El parámetro de proyección determina qué campos se devuelven a los documentos coincidentes.
Este documento lleva:
{ field1: <value1>, field2: <value2> ... }
Aquí, si el valor del campo es 1/verdadero , especifica la inclusión del campo, o si el valor del campo es 0/falso , especifica la exclusión del campo.
- ordenar: determina qué documento modificará la operación si la consulta selecciona varios documentos. findOneAndupdate() actualizará el primer documento en el orden de clasificación especificado por este argumento. El tipo de este parámetro es documento.
- maxTimeMS: El tipo de este parámetro es número. Especifica el límite de tiempo en milisegundos dentro del cual debe completarse la operación. Dará un error si se excede el límite.
- upsert: el valor predeterminado de este parámetro es falso. Si el valor de esta opción se establece en verdadero y ningún documento coincide con la consulta de filtro dada, entonces este método crea un nuevo documento y devuelve un valor nulo (después de insertar un nuevo documento) a menos que el valor de la opción returnNewDocument se establezca en verdadero. O si el valor de esta opción upsert se establece en verdadero, entonces este método actualiza el documento que coincide con la consulta de filtro dada.
- returnNewDocument: El tipo de este parámetro es booleano. De forma predeterminada, este método devuelve el documento original. Para devolver el documento actualizado, use returnNewDocument y establezca su valor en verdadero.
- Colación: Especifica el uso de la colación para operaciones. Permite a los usuarios especificar las reglas específicas del idioma para la comparación de strings, como reglas para mayúsculas y minúsculas y acentos. El tipo de este parámetro es un documento.
- arrayFilters: es una array de documentos de filtro que indica qué elementos de la array modificar para una operación de actualización en un campo de array. El tipo de este parámetro es una array.
Devolver:
Devuelve el documento original, pero si queremos devolver el documento actualizado, debemos establecer el valor del parámetro returnNewDocument en verdadero.
Ejemplos:
En los siguientes ejemplos, estamos trabajando con:
Base de datos: gfg
Colecciones: estudiante
Documento: Tres documentos contienen los detalles de los estudiantes
- Actualice el primer documento coincidente:
db.student.findOneAndUpdate({name:"Nikhil"},{$inc:{score:4}})
Aquí, actualizamos el primer documento coincidente de acuerdo con los criterios de selección (es decir, nombre: «Nikhil») por un nuevo documento (es decir, {$inc: {puntuación: 4}}: el valor del campo de puntuación aumenta en 4 ) y devolver el documento original:
Despúes de actualizar:
- Actualice el valor del documento incrustado:
db.student.findOneAndUpdate({name:"Ashok"},{$inc:{"score.math":50}})
Aquí, actualizamos el valor del campo matemático en el documento incrustado.
Despúes de actualizar:
- Actualice el primer documento coincidente y devuelva el documento actualizado:
db.student.findOneAndUpdate({name:"Vishal"},{$inc:{score:4}},{returnNewDocument:true})
Aquí, actualizamos el primer documento coincidente de acuerdo con los criterios de selección (es decir, nombre: «Vishal») por un nuevo documento (es decir, {$inc: {puntuación: 4}}: el valor del campo de puntuación aumenta en 4 ) y devolver el nuevo documento actualizado porque establecemos el valor de returnNewDocument en verdadero.
Publicación traducida automáticamente
Artículo escrito por nikhilchhipa9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA