Algunos metodos para Arreglos en MongoDB que deberias saber
En este ejemplo practico te mostrare algunos metodos o operadores de MongoDB para trabajar con arreglos
¿ Como encontrar un documento dentro de un array?
Para este caso de uso pondre este ejemplo donde tenemos una colección llamada equipos en la cual queremos buscar un jugador del array jugadores
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc4"),
"Nombre" : "Los Angeles Lakers",
"Categoria" : "NBA",
"jugadores" : [
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc5"),
"nombre" : "Lebron James",
"edad" : 29,
"Altura" : 2.03
},
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc6"),
"nombre" : "Anthony Davis",
"edad" : 18,
"Altura" : 2.08
}
]
}
Si queremos buscar por id en el campo jugadores la colección con el nombre Lebron James. Nuestra consulta seria asi:
Recuerda: En la consulta {“jugadores.$”: true} el operador $ indica traer todos los campos de la colección
db.equipos.find({"jugadores._id": ObjectId("5e90c6fef25b8a80636fedc5")}, {"jugadores.$": true})
Ontenemos como respuesta:
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc4"),
"jugadores" : [
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc5"),
"nombre" : "Lebron James",
"edad" : 29,
"Altura" : 2.03
}
]
}
¿ Como guardar un documento dentro de un array?
En este caso si queremos introducir otro documento en el array jugadores
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc4"),
"Nombre" : "Los Angeles Lakers",
"Categoria" : "NBA",
"jugadores" : [
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc5"),
"nombre" : "Lebron James",
"edad" : 29,
"Altura" : 2.03
},
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc6"),
"nombre" : "Anthony Davis",
"edad" : 18,
"Altura" : 2.08
}
]
}
Para esto utilizaremos el operador $push el cual agrega un valor especificado a una matriz. Nuestra consulta seria asi:
//Nuestra variable
jugador = {"_id": ObjectId(),"nombre": "Kyle Kuzma","edad":21, "Altura": 2.03},
db.equipos.update({_id: ObjectId("5e90c6fef25b8a80636fedc4")}, {$push: {"jugadores": jugador} })
Obtenemos como respuesta:
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc4"),
"Nombre" : "Los Angeles Lakers",
"Categoria" : "NBA",
"jugadores" : [
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc5"),
"nombre" : "Lebron James",
"edad" : 29,
"Altura" : 2.03
},
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc6"),
"nombre" : "Anthony Davis",
"edad" : 18,
"Altura" : 2.08
},
{
"_id" : ObjectId("5e90cef25cb8926c2948419b"),
"nombre" : "Kyle Kuzma",
"edad" : 21,
"Altura" : 2.03
}
]
}
¿ Como eliminar un documento dentro de un array?
En este caso queremos borrar un objeto del array jugadores por ejemplo la coleccion donde incluye a Lebron James, para esto usamos el operador $pull. Nuestra consulta seria asi:
db.equipos.update( { } ,{ $pull: { jugadores: { _id : ObjectId("5e90c6fef25b8a80636fedc5") } } } )
Obtenemos como resultado:
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc4"),
"Nombre" : "Los Angeles Lakers",
"Categoria" : "NBA",
"jugadores" : [
{
"_id" : ObjectId("5e90c6fef25b8a80636fedc6"),
"nombre" : "Anthony Davis",
"edad" : 18,
"Altura" : 2.08
},
{
"_id" : ObjectId("5e90cef25cb8926c2948419b"),
"nombre" : "Kyle Kuzma",
"edad" : 21,
"Altura" : 2.03
}
]
}