No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Actualizando un documento

13/30
Recursos

Aportes 7

Preguntas 0

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Actualizar documento

para actualizar un documento debemos pasar un query con un identificador del documento y un objeto con operadores como $inc para incrementar propiedades num√©ricas o $set para setear una o mas propiedades, a√Īadir una nueva etc.

{
  _id: "8asd8asd8asd8asd", 
  name: "Juan",
  age: 20 
}

modificar una propiedad

db.collection.updateOne({ _id: ObjectId("id")}, { $set:  {name: "change name"}})

modificar varias propiedades

db.collection.updateOne({ _id: ObjectId("id")}, { $set: { name: "change name", age: 23}})

a√Īadir una nueva propiedad

db.collection.updateOne({ _id: ObjectId("id")}, { $set: { name: "change name", age: 23, gender: "M" }})

incrementar una propiedad

db.collection.updateOne({ _id: ObjectId("id")}, { $inc: { age: 5 }})

Los operadores son símbolos especiales que ayudan a los compiladores a realizar tareas matemáticas o lógicas. MongoDB ofrece varios tipos de operadores para interactuar con la base de datos.

use("platzi_store")

//ACTUALIZAR ATRIBUTOS con $set
db.products.updateOne(
    //query
    {
        _id: 1
    },
    //change => operator
    {
        $set: {
            name: 'basura',
            price: 1,
            tags: ['useless', 'small'] //tambien puede a√Īadir propiedades nuevas
        }
    }
)

///INCREMENTO con $inc
db.products.updateOne(
    //query
    {
        _id: 1
    },
    //change => operator
    {
        $inc: {
            price: 100
        }
    }
)

//BUSCAR Y MODIFICAR UN OBJETO CON ID AUTOGENERADO POR MONGO CON ObjectId()
db.products.updateOne(
    //query
    {
        _id: ObjectId("63d81a4a8e4fe2331cfbef8f")
    },
    //change => operator
    {
        $inc: {
            price: 100
        }
    }
)

db.products.find()

// $set: "Sets the value of a field in a document."
// $inc: "Increments the value of the field by the specified amount."
// Objectld: "Function to find a doc with objlD"

Para quienes no asignaron id sino que utilizan el autogenerado por mongo, el update sería:

db.products.updateOne(
   { "_id": ObjectId("63e91131ae0786ce88df4944") },
   { $set: { "name": "New Miniature 1", "price": 110 } }
)

donde ObjectId es la propiedad para accede dentro del documento. Ya que este se vería así en los registros:

{
    "_id": {
      "$oid": "63e91131ae0786ce88df4944"
    },
    "name": "Product 1",
    "price": 100
  }
**Replace y Update** *La principal diferencia entre replace y update en MongoDB es cómo se modifican los documentos en una colección:* ***Replace:** *       * *Reemplaza un documento completo por otro.*        * *No se pueden usar operadores de actualización como $inc o $set.*        * *Útil para reemplazar un documento completo con nuevos datos.* *Update:*        * *Modifica los campos específicos de un documento.*  * *Se pueden usar operadores de actualización para modificar valores, agregar nuevos campos o eliminar campos existentes.*        * *Útil para realizar cambios específicos en un documento.* ** ```js use("football") db.teams.replaceOne( { _id: ObjectId("65cb8d4b73c22307b9a89b24"), }, { name: "Arsenal", league: "Premier League", country: "England" } ) use("football") db.teams.updateOne( { _id: ObjectId("65cb8d4b73c22307b9a89b24"), }, { $set: { name: "Aston Villa" } } ) ```use("football")db.teams.replaceOne(    {      \_id: ObjectId("65cb8d4b73c22307b9a89b24"),    },    {      name: "Arsenal",      league: "Premier League",      country: "England"    }  ) **       
use("platzi_store");

db.products.updateOne(
  //query, using ObjectId function, because is a $oid generated from mongo
  { _id: ObjectId("64af6901faea58044b9fd37e") },
  //change => with operator: $set, $inc
  {
    $set: {
      name: "Charger ultra speed",
      types: ['american', 'european', 'african'], // we can put new attributes
    },
    $inc: {
      price: 100, // increment the numeric values, plus this value
    },
  }
);

db.products.find();