Utilice el método findOneAndUpdate() en MongoDB
-
Utilice el método
findOneAndUpdate()
en MongoDB -
Utilice el método
findOneAndUpdate()
para actualizar el primer documento coincidente -
Utilice el método
findOneAndUpdate()
para actualizar el valor del documento incrustado -
Utilice el método
findOneAndUpdate()
para actualizar el primer documento coincidente y devolver el documento actualizado - Conclusión
Este artículo presentará el método findOneAndUpdate()
en MongoDB. Usaremos este método para actualizar los primeros documentos coincidentes e incrustados.
Utilice el método findOneAndUpdate()
en MongoDB
El método db.collection.findOneAndUpdate()
actualiza el documento coincidente de la colección según un criterio de selección. Este método solo actualizará el primer documento que coincida con los criterios de selección si hay más de un documento coincidente.
El valor del campo _id
no cambia cuando actualizas el documento.
Este método devolverá el documento original; sin embargo, debe especificar el valor del parámetro returnNewDocument
en true
si desea que se devuelva el documento actualizado.
Puede utilizar este método para reemplazar documentos incrustados. Este enfoque también se puede utilizar en transacciones de varios documentos.
Sintaxis:
db.collection.findOneAndUpdate(
selection_criteria: <document>,
update_data: <document>,
{
projection: <document>,
sort: <document>,
maxTimeMS: <number>,
upsert: <boolean>,
returnNewDocument: <boolean>,
collation: <document>,
arrayFilters: [ <filterdocument1>, … ]
})
Parámetros:
- El primer parámetro,
selection_criteria
, es el criterio de selección para la actualización. El tipo de este parámetro es un documento. - El segundo parámetro,
update_data
, es un documento a actualizar. El tipo de este parámetro es un documento. - El tercer parámetro es opcional.
Parámetros opcionales:
-
proyección
: El tipo de este parámetro es un documento. El parámetro de proyección determinará qué campos se devuelven a los documentos coincidentes.Este documento toma los siguientes valores:
{ field1: <boolean>, field2: <boolean> ... }
Si el valor del campo es
1
otrue
, indica que el campo está incluido, y si el valor del campo es0
ofalse
, el campo está excluido.
-
clasificar
: Esto determinará qué documento modificará la operación si la consulta selecciona varios documentos. El métododb.collection.findOneAndUpdate()
actualizará el primer documento en el orden de clasificación especificado por este argumento.El tipo de este parámetro es un documento.
-
maxTimeMS
: El tipo de este parámetro es número. Especificará el límite de tiempo en milisegundos dentro del cual se debe completar la operación.Devolverá un error si se excede el límite de tiempo.
-
upsert
: El valor por defecto de este parámetro esfalse
.Supongamos que el valor de esta opción se establece en “true” y ningún documento coincide con la consulta de filtro dada. En ese caso, este método crea un nuevo documento.
Devuelve un valor
nulo
(después de insertar un nuevo documento) a menos que el valor de la opciónreturnNewDocument
esté configurado comotrue.
. O si el valor de esta opciónupsert
se establece entrue.
, este método actualizará el documento que coincida con la consulta de filtro dada. -
returnNewDocument
: Este tipo de parámetro es un booleano. De forma predeterminada, este método devolverá el documento original.Utilice el parámetro
returnNewDocument
y establezca su valor entrue
para devolver el documento actualizado. -
Collation
: Especifica el uso de la colación para operaciones. Permite a los usuarios determinar las reglas específicas del idioma para la comparación de cadenas, como reglas para mayúsculas y minúsculas y acentos.El tipo de este parámetro es un documento.
-
arrayFilters
: una matriz de documentos de filtro indica qué elementos de la matriz se modificarán para una operación de actualización en un campo de la matriz. El tipo de este parámetro es una matriz.
Devolverá el documento original, pero si desea devolver el documento actualizado, deberá establecer el valor del parámetro returnNewDocument
en true
.
En los siguientes ejemplos, trabajará con la siguiente base de datos. Creará una colección llamada estudiantes
con documentos que contengan los detalles de los estudiantes.
La base de datos se da a continuación:
db={
"students": [
{
id: 1,
name: "Ali",
language: "JavaScript",
score: 82
},
{
id: 2,
name: "Haris",
language: "Python",
score: 91
},
{
id: 3,
name: "Hamza",
language: "Python",
score: {
"Physics": 84,
"Math": 85
}
}
]
}
Utilice el método findOneAndUpdate()
para actualizar el primer documento coincidente
Para este ejemplo, utilizará la consulta que se proporciona a continuación:
db.students.findOneAndUpdate({name:"Ali"},{$inc:{score:4}})
Aquí, actualizará el primer documento coincidente de acuerdo con los criterios de selección (es decir, nombre: "Ali"
) por un nuevo documento (es decir, {$inc:{puntuación:4}
}. El valor de score
se incrementa en cuatro y devuelve el documento original.
Producción:
Después de actualizar el documento, devolverá esta salida.
Utilice el método findOneAndUpdate()
para actualizar el valor del documento incrustado
Para este ejemplo, utilizará la consulta que se proporciona a continuación:
db.student.findOneAndUpdate({name:"Hamza"},{$inc:{"score.Math":5}})
Aquí, actualizará el valor del campo Matemáticas
en el documento incrustado. El valor del campo Math
se incrementa en cinco.
Producción:
Utilice el método findOneAndUpdate()
para actualizar el primer documento coincidente y devolver el documento actualizado
Para este ejemplo, utilizará la consulta que se proporciona a continuación:
db.student.findOneAndUpdate({name:"Ali"},{$inc:{score:5}},{returnNewDocument:true})
Aquí, actualizará el primer documento coincidente de acuerdo con los criterios de selección (es decir, nombre: "Ali"
) por un nuevo documento (es decir, {$inc:{puntuación:5}
}. El valor de puntuación
se incrementa en cinco.
Devuelve el documento recién actualizado porque establecemos el valor de returnNewDocument
en true
.
Producción:
Conclusión
Con la ayuda de este artículo del tutorial de MongoDB, ha aprendido a utilizar el método db.collection.findOneAndUpdate()
, que se utiliza para actualizar el primer documento coincidente de la colección que coincida con los criterios de selección. También puede usar este método para reemplazar documentos incrustados y también usarlo en transacciones de varios documentos.