Colecciones en MongoDB
1. Qué es una colección
Una colección en MongoDB es un conjunto de documentos. Es equivalente a una tabla en bases de datos relacionales.
| SQL | MongoDB |
|---|---|
| Base de datos | Database |
| Tabla | Collection |
| Fila | Document |
| Columna | Field |
2. Estructura de un documento
{
"_id": ObjectId("507f191e810c19729de860ea"),
"nombre": "Juan",
"edad": 30,
"email": "juan@email.com"
}
3. Crear base de datos
use tienda
Si la base de datos no existe, MongoDB la crea cuando insertas el primer documento.
4. Crear colección
Creación automática
db.usuarios.insertOne({
nombre: "Juan",
edad: 30
})
Creación manual
db.createCollection("usuarios")
5. Ver colecciones
show collections
db.getCollectionNames()
6. Insertar documentos
Insertar uno
db.usuarios.insertOne({
nombre:"Ana",
edad:25
})
Insertar varios
db.usuarios.insertMany([
{nombre:"Pedro",edad:40},
{nombre:"Laura",edad:35}
])
7. Consultar documentos
Ver todos
db.usuarios.find()
Buscar uno
db.usuarios.findOne({nombre:"Ana"})
Buscar con filtro
db.usuarios.find({
edad:25
})
8. Operadores de consulta
| Operador | Significado |
|---|---|
| $gt | Mayor que |
| $lt | Menor que |
| $gte | Mayor o igual |
| $lte | Menor o igual |
| $ne | Diferente |
| $in | Dentro de lista |
db.usuarios.find({
edad:{$gt:30}
})
9. Actualizar documentos
Actualizar uno
db.usuarios.updateOne(
{nombre:"Ana"},
{$set:{edad:26}}
)
Actualizar varios
db.usuarios.updateMany(
{edad:{$gt:30}},
{$set:{activo:true}}
)
10. Eliminar documentos
Eliminar uno
db.usuarios.deleteOne({
nombre:"Pedro"
})
Eliminar varios
db.usuarios.deleteMany({
edad:{$lt:20}
})
11. Contar documentos
db.usuarios.countDocuments()
12. Eliminar colección
db.usuarios.drop()
13. Índices
Los índices aceleran las consultas.
db.usuarios.createIndex({
nombre:1
})
14. Documentos anidados
{
nombre:"Carlos",
direccion:{
ciudad:"Buenos Aires",
pais:"Argentina"
}
}
15. Arrays
{
nombre:"Ana",
hobbies:["leer","programar","viajar"]
}
16. Aggregation
db.ventas.aggregate([
{$match:{estado:"completado"}},
{$group:{_id:"$cliente",total:{$sum:"$monto"}}}
])
17. Flujo de trabajo básico
use tienda
db.usuarios.insertOne({...})
db.usuarios.find()
db.usuarios.updateOne(...)
db.usuarios.deleteOne(...)