Fundamentos de MongoDB
¿Qué es Mongo DB?
Bases de datos NoSQL
¿Qué son los documentos y colecciones?
Creando tu primer BD
Usando Mongo Compass
Mongo en VSCode
Instalando Docker
Mongo con Docker
Conectándonos usando mongosh
Json vs. Bson
CRUD
Insertando un documento
Insertando varios documentos
Actualizando un documento
Actualizando varios documentos
Array Update Operators
Update or insert
Elimando documentos
Operadores
Usando $eq y $ne
Usando $gt, $gte, $lt, $lte
Ejemplos de $gt, $gte, $lt, $lte
Usando $regex
Projection
Operadores para Arrays
Operadores lógicos
Expresive operator
Query in subdocs
Herramientas comunes al trabajar con MongoDB
Aggregation Framework
Sort, limit y skip
Atlas features
Toma el Curso de Modelamiento de Datos en MongoDB
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Actualizar documentos en MongoDB es una habilidad esencial para cualquier desarrollador. Puedes hacerlo a través de la interfaz de Mongo Compass o mediante código, cada uno con sus ventajas. Mongo Compass te permite realizar ediciones directas de forma visual, mientras que con código puedes automatizar y personalizar las actualizaciones de los documentos.
Platzi Store
).Sin embargo, para sacar el máximo provecho de MongoDB, es esencial saber cómo realizar estas acciones mediante código.
Para actualizar documentos en MongoDB utilizando código, necesitas seguir un conjunto de pasos que aseguran el éxito de la operación. Aquí veremos un enfoque basado en código para realizar estas actualizaciones:
UpdateDoc
y cómo funciona?UpdateDoc
es una utilidad diseñada para manejar actualizaciones en uno o varios documentos mediante MongoDB. Antes de actualizar, es crucial poblar (o llenar) la base de datos.
// Código para insertar productos sin problemas de duplicidad
db.collection('products').insertMany([
{"name": "Product1", "price": 1000},
{"name": "Product2", "price": 2000}
], { ordered: false });
Este código llena la base de datos con productos, asegurando que no hay duplicados.
UpdateOne
?UpdateOne
te permite realizar cambios en un único documento especificado por un query. Aquí está el paso a paso:
Consulta: Primero, necesitas identificar el documento que deseas actualizar. Esto se hace mediante un ID
único.
Actualización: Definir los cambios que quieres aplicar usando operadores como $set
o $inc
.
$set
:db.collection('products').updateOne(
{ _id: ObjectId("exampleObjectId") },
{ $set: { "name": "NuevoNombre", "price": 1500 } }
);
$inc
:db.collection('products').updateOne(
{ _id: ObjectId("exampleObjectId") },
{ $inc: { "price": 100 } }
);
Este último incrementa el precio del producto encontrado en 100 unidades en la moneda que estés utilizando.
Cuando un ObjectID
es generado por MongoDB, no puedes simplemente buscarlo como un string. Debes utilizar la función ObjectId()
para manipularlo correctamente.
// Uso correcto del ObjectID
db.collection('products').updateOne(
{ _id: ObjectId("exampleObjectId") },
{ $inc: { "price": 100 } }
);
Así, aseguras que el objeto es localizado y actualizado correctamente.
Los operadores como $set
y $inc
son esenciales en las actualizaciones en MongoDB:
Consultar la documentación oficial de MongoDB te proporcionará una lista completa de operadores que puedes usar para dinámicas actualizaciones.
Al dominar estas técnicas, aumentas tu habilidad para manejar bases de datos no solo eficientemente, sino también de una forma adaptable a las necesidades cambiantes de tus aplicaciones. ¡Sigue explorando las posibilidades que MongoDB te ofrece y sigue aprendiendo!
Aportes 10
Preguntas 0
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.
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
}
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"
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();
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?