Consultas en MongoDB
Esta actividad fue realizada por Robinson Andres Cortes
Para completar esta actividad debes saber cómo crear una colección en MongoDB y cómo insertar múltiples documentos.
Para este ejercicio debes descargar el siguiente archivo con todos los datos que tienes que insertar en tu colección, en este caso llamada users: users
Nivel 1 – Consultas Básicas
- Listar todos los documentos de la colección
users.
Comprueba si estoy en lo correcto
db.users.find()
- Mostrar únicamente los campos
first_name,last_nameyemail.
Comprueba si estoy en lo correcto
db.users.find({}, {
first_name:1,
last_name:1,
email:1,
_id:0
})
- Obtener todos los usuarios cuyo
rolesea"admin".
Comprueba si estoy en lo correcto
db.users.find({role:"admin"})
- Buscar los usuarios cuyo
countrysea"Colombia".
Comprueba si estoy en lo correcto
db.users.find({country:"Colombia"})
- Listar los usuarios que estén activos (
is_active = true).
Comprueba si estoy en lo correcto
db.users.find({is_active:1})
- Buscar los usuarios que no estén verificados (
is_verified = false).
Comprueba si estoy en lo correcto
db.users.find({is_verified:0})
- Obtener los usuarios cuyo
gendersea"Masculino".
Comprueba si estoy en lo correcto
db.users.find({gender:"Masculino"})
- Listar los usuarios que vivan en la ciudad
"Medellín".
Comprueba si estoy en lo correcto
db.users.find({city:"Medellín"})
- Buscar los usuarios que tengan al menos un hijo (
children_count > 0).
Comprueba si estoy en lo correcto
db.users.find({children_count:{$gt: 0}})
- Listar los usuarios cuya profesión (
profession) no sea null.
Comprueba si estoy en lo correcto
db.users.find({profession: {$ne: null}})
Nivel 2 – Filtros con Operadores
- Buscar usuarios con
monthly_incomemayor a 3.000.000.
Comprueba si estoy en lo correcto
db.users.find({monthly_income:{$gt:3000000}})
- Buscar usuarios con ingresos entre 2.000.000 y 5.000.000.
Comprueba si estoy en lo correcto
db.users.find({monthly_income: {$gte:2000000, $lte:5000000}})
- Buscar usuarios cuya fecha de nacimiento sea posterior al
2000-01-01.
Comprueba si estoy en lo correcto
db.users.find({birth_date: {$gt: new Date('2000-01-01')}})
- Buscar usuarios cuyo
document_typeesté en["CC", "CE"].
Comprueba si estoy en lo correcto
db.users.find({document_type: {$in:["CC", "CE"]}})
- Buscar usuarios cuyo
cityno sea"Bogotá".
Comprueba si estoy en lo correcto
db.users.find({city:{$ne:"Bogotá"}})
- Buscar usuarios cuyo nombre empiece por la letra
"A".
Comprueba si estoy en lo correcto
db.users.find({first_name:{$regex:/^A/}})
- Buscar usuarios cuyo correo electrónico termine en
"gmail.com".
Comprueba si estoy en lo correcto
db.users.find({email:{$regex:/example.com$/}})
- Buscar usuarios que tengan más de 2 hijos y estén activos.
Comprueba si estoy en lo correcto
db.users.find({$and: [{children_count: {$gte:2}}, {is_active:1}]})
- Buscar usuarios cuyo
marital_statussea"Casado"y tengan hijos.
Comprueba si estoy en lo correcto
db.users.find({$and: [{marital_status:"Casado"},{children_count:{$gt:0}}]})
- Buscar usuarios que estén inactivos o no verificados.
Comprueba si estoy en lo correcto
db.users.find({$or:[{is_active:0},{is_verified:0}]})
Nivel 3 – Ordenamiento y Paginación
- Listar usuarios ordenados por
monthly_incomede mayor a menor.
Comprueba si estoy en lo correcto
db.users.find().sort({monthly_income:-1})
- Obtener los 5 usuarios más recientes según
created_at.
Comprueba si estoy en lo correcto
db.users.find().sort({created_at:-1}).limit(5)
- Implementar paginación: mostrar la página 2 con 10 registros por página.
Comprueba si estoy en lo correcto
db.users.find().skip(10).limit(10)
- Mostrar el nombre completo concatenado (
first_name+last_name) y la ciudad usando agregación.
Comprueba si estoy en lo correcto
db.users.find({}, {full_name:{$concat:["$first_name", " ", "$last_name"]}, city:1})
- Listar usuarios ordenados por fecha de nacimiento del más joven al mayor.
Comprueba si estoy en lo correcto
db.users.find().sort({birth_date:-1})
Nivel 4 – Aggregation Framework
- Calcular el ingreso promedio (
monthly_income) de todos los usuarios.
Comprueba si estoy en lo correcto
db.users.aggregate({
$group:{
_id:null,
monthly_avg_income:{$avg:"$monthly_income"}
}
})
- Calcular el ingreso promedio por ciudad.
Comprueba si estoy en lo correcto
db.users.aggregate({
$group:{
_id:"$city",
monthly_avg_income:{$avg:"$monthly_income"}
}
})
- Contar cuántos usuarios hay por cada
role.
Comprueba si estoy en lo correcto
db.users.aggregate({
$group:{
_id:"$role",
count: {$sum:1}
}
})
- Contar cuántos usuarios están activos vs inactivos.
Comprueba si estoy en lo correcto
db.users.aggregate({
$group:{
_id:"$is_active",
count: {$sum:1}
}
})
- Obtener la cantidad total de hijos agrupados por
state.
Comprueba si estoy en lo correcto
db.users.aggregate({
$group:{
_id:"$state",
children:{$sum:"$children_count"}
}
})