Consultas más comunes de mongodb
MQL • CRUD • Aggregation
(Basado en la documentación actual de MongoDB)
CREATE – Insertar documentos
- Insertar un documento
"db.users.insertOne({ name: "Parvez", age: 28, role: "user" })"
→ { acknowledged: true, insertedId: ObjectId("...") } - Insertar varios documentos
"db.users.insertMany([ { name: "Ali", age: 25 }, { name: "Sara", age: 30 }, { name: "John", age: 22 } ])"
→ { acknowledged: true, insertedIds: [ObjectId(...), ...] }
READ & FILTER – Buscar documentos
- Buscar todos los documentos → "db.users.find({})"
- Buscar con condición → "db.users.find({ age: { $gt: 25 } })"
- Buscar dentro de un rango → "db.users.find({ age: { $gte: 18, $lte: 30 } })"
- Buscar con $in (varios valores) → "db.users.find({ role: { $in: ["admin", "editor"] } })"
- Buscar con $or → "db.users.find({ $or: [ { age: { $lt: 18 } }, { role: "admin" } ] })"
- Buscar con expresión regular (regex) → "db.users.find({ email: { $regex: "@gmail\.com$" } })"
- Buscar campos específicos (proyección) → "db.users.find({}, { name: 1, email: 1, _id: 0 })"
- Ordenar y limitar → "db.users.find({}).sort({ age: -1 }).limit(5)"
UPDATE – Modificar documentos
- Actualizar un documento
"db.users.updateOne({ name: "Parvez" }, { $set: { age: 29 } })" - Actualizar varios documentos
"db.users.updateMany({ role: "user" }, { $set: { active: true } })" - Incrementar un campo
"db.users.updateOne({ email: "parvez@example.com" }, { $inc: { points: 10 } })"
DELETE – Eliminar documentos
- Eliminar un documento → "db.users.deleteOne({ email: "parvez@example.com" })"
- Eliminar varios documentos → "db.users.deleteMany({ active: false })"
CONSULTAS ÚTILES
- Contar documentos → "db.users.countDocuments({ active: true })" → 5
- Obtener valores únicos → "db.users.distinct("role")" → ["admin", "editor", "user"]
- Crear un índice → "db.users.createIndex({ email: 1 })"
AGGREGATION – Agrupar y calcular
- Contar usuarios por rol
"db.users.aggregate([ { $group: { _id: "$role", count: { $sum: 1 } } } ])"
→ [{ _id: "admin", count: 2 }, { _id: "editor", count: 3 }, { _id: "user", count: 10 }]