Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Update Documents

Si tu aplicación almacena y modifica datos en MongoDB, probablemente utilices operaciones de inserción y actualización. En determinados flujos de trabajo, el hecho de realizar una operación de inserción o actualización depende de si existe el documento. En estos casos, puedes simplificar la lógica de tu aplicación utilizando el upsert opción disponible en los siguientes métodos:

  • updateOne()

  • replaceOne()

  • updateMany()

Si el filtro de query pasado a estos métodos no encuentra ninguna coincidencia y se establece la opción upsert en true, MongoDB inserta el documento de actualización. Vamos a revisar un ejemplo.

Supongamos que la aplicación rastrea la ubicación actual de los camiones de comida, almacenando los datos de la dirección más cercana en la colección myDB.foodTrucks, que se asemeja a lo siguiente:

[
{ name: "Haute Skillet", address: "42 Avenue B" },
{ name: "Lady of the Latke", address: "35 Fulton Rd" },
...
]

Como usuario de la aplicación, se lee sobre el cambio de ubicación habitual de un camión de comida y se desea aplicar la actualización. Esta actualización podría asemejarse a lo siguiente:

const query = { name: 'Deli Llama' };
const update = { $set: { name: 'Deli Llama', address: '3 Nassau St' } };
const options = {};
await myColl.updateOne(query, update, options);

Si existe un camión de comida llamado "Deli Llama", llamar al método anterior actualizará el documento en la colección. Sin embargo, si no hay camiones de comida llamados "Deli Llama" en la colección, no se realizan cambios.

Se debe considerar el caso en el que se desea añadir información sobre el camión de comida aunque aún no exista en la colección. En lugar de consultar primero si existe para determinar si insertar o actualizar el documento, podemos establecer upsert a true en nuestra llamada a updateOne() de la siguiente manera:

const query = { name: 'Deli Llama' };
const update = { $set: { name: 'Deli Llama', address: '3 Nassau St' } };
const options = { upsert: true };
await myColl.updateOne(query, update, options);

Después de ejecutar la operación anterior, su colección tendrá un aspecto similar al siguiente, incluso si el documento "Deli Llama" no existía en la colección antes de la operación:

[
{ name: "Haute Skillet", address: "42 Avenue B" },
{ name: "Lady of the Latke", address: "35 Fulton Rd" },
{ name: "Deli Llama", address: "3 Nassau St" },
...
]

Volver

Query geoespacial

En esta página