Utilice el método findOneAndUpdate() en MongoDB

Tahseen Tauseef 15 febrero 2024
  1. Utilice el método findOneAndUpdate() en MongoDB
  2. Utilice el método findOneAndUpdate() para actualizar el primer documento coincidente
  3. Utilice el método findOneAndUpdate() para actualizar el valor del documento incrustado
  4. Utilice el método findOneAndUpdate() para actualizar el primer documento coincidente y devolver el documento actualizado
  5. Conclusión
Utilice el método findOneAndUpdate() en MongoDB

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:

  1. 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.
  2. El segundo parámetro, update_data, es un documento a actualizar. El tipo de este parámetro es un documento.
  3. El tercer parámetro es opcional.

Parámetros opcionales:

  1. 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 o true, indica que el campo está incluido, y si el valor del campo es 0 o false, el campo está excluido.

  1. clasificar: Esto determinará qué documento modificará la operación si la consulta selecciona varios documentos. El método db.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.

  2. 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.

  3. upsert: El valor por defecto de este parámetro es false.

    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ón returnNewDocument esté configurado como true.. O si el valor de esta opción upsert se establece en true., este método actualizará el documento que coincida con la consulta de filtro dada.

  4. 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 en true para devolver el documento actualizado.

  5. 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.

  6. 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:

método findOneAndUpdate()

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:

findOneAndUpdate() Método 2

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:

findOneAndUpdate() Método 3

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.

Artículo relacionado - MongoDB Method