Saltar al contenido principal

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

  1. Listar todos los documentos de la colección users.
Comprueba si estoy en lo correcto
db.users.find()
  1. Mostrar únicamente los campos first_name, last_name y email.
Comprueba si estoy en lo correcto
db.users.find({}, {
first_name:1,
last_name:1,
email:1,
_id:0
})
  1. Obtener todos los usuarios cuyo role sea "admin".
Comprueba si estoy en lo correcto
db.users.find({role:"admin"})
  1. Buscar los usuarios cuyo country sea "Colombia".
Comprueba si estoy en lo correcto
db.users.find({country:"Colombia"})
  1. Listar los usuarios que estén activos (is_active = true).
Comprueba si estoy en lo correcto
db.users.find({is_active:1})
  1. Buscar los usuarios que no estén verificados (is_verified = false).
Comprueba si estoy en lo correcto
db.users.find({is_verified:0})
  1. Obtener los usuarios cuyo gender sea "Masculino".
Comprueba si estoy en lo correcto
db.users.find({gender:"Masculino"})
  1. Listar los usuarios que vivan en la ciudad "Medellín".
Comprueba si estoy en lo correcto
db.users.find({city:"Medellín"})
  1. 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}})
  1. 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

  1. Buscar usuarios con monthly_income mayor a 3.000.000.
Comprueba si estoy en lo correcto
db.users.find({monthly_income:{$gt:3000000}})
  1. 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}})
  1. 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')}})
  1. Buscar usuarios cuyo document_type esté en ["CC", "CE"].
Comprueba si estoy en lo correcto
db.users.find({document_type: {$in:["CC", "CE"]}})
  1. Buscar usuarios cuyo city no sea "Bogotá".
Comprueba si estoy en lo correcto
db.users.find({city:{$ne:"Bogotá"}})
  1. Buscar usuarios cuyo nombre empiece por la letra "A".
Comprueba si estoy en lo correcto
db.users.find({first_name:{$regex:/^A/}})
  1. Buscar usuarios cuyo correo electrónico termine en "gmail.com".
Comprueba si estoy en lo correcto
db.users.find({email:{$regex:/example.com$/}})
  1. 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}]})
  1. Buscar usuarios cuyo marital_status sea "Casado" y tengan hijos.
Comprueba si estoy en lo correcto
db.users.find({$and: [{marital_status:"Casado"},{children_count:{$gt:0}}]})
  1. 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

  1. Listar usuarios ordenados por monthly_income de mayor a menor.
Comprueba si estoy en lo correcto
db.users.find().sort({monthly_income:-1})
  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)
  1. 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) 
  1. 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})
  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

  1. 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"}
}
})
  1. Calcular el ingreso promedio por ciudad.
Comprueba si estoy en lo correcto
db.users.aggregate({
$group:{
_id:"$city",
monthly_avg_income:{$avg:"$monthly_income"}
}
})
  1. Contar cuántos usuarios hay por cada role.
Comprueba si estoy en lo correcto
db.users.aggregate({
$group:{
_id:"$role",
count: {$sum:1}
}
})
  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}
}
})
  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"}
}
})