Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/tutosrive/db-nosql-2026-1/llms.txt

Use this file to discover all available pages before exploring further.

Las cuatro operaciones fundamentales de cualquier base de datos son Create, Read, Update y Delete — conocidas como CRUD. En MongoDB estas operaciones se ejecutan desde mongosh (MongoDB Shell) llamando a métodos sobre objetos de colección (db.<colección>.<método>()). Los ejemplos de esta página utilizan los esquemas reales del curso: la colección usuarios con campos como user_id, nombre, alias, correo, programa, semestre, plan y puntos_acumulados.

Insertar (Create)

insertOne()

Inserta un único documento en la colección. Devuelve un objeto con acknowledged: true y el insertedId generado.
db.usuarios.insertOne({
  user_id: 3,
  nombre: "Paula Rojas",
  alias: "projas3",
  correo: "projas3@uni.edu",
  programa: "Administración",
  semestre: 3,
  plan: "premium",
  puntos_acumulados: 0
})
Respuesta esperada:
{
  "acknowledged": true,
  "insertedId": ObjectId("...")
}

insertMany()

Inserta un arreglo de documentos en una sola operación. Es significativamente más eficiente que múltiples llamadas a insertOne().
db.usuarios.insertMany([
  {
    user_id: 4,
    nombre: "Felipe Pérez",
    alias: "fperez4",
    correo: "fperez4@uni.edu",
    programa: "Derecho",
    semestre: 7,
    plan: "free",
    puntos_acumulados: 0
  },
  {
    user_id: 5,
    nombre: "Carlos Vargas",
    alias: "cvargas5",
    correo: "cvargas5@uni.edu",
    programa: "Psicología",
    semestre: 8,
    plan: "premium",
    puntos_acumulados: 0
  }
])
Por defecto, insertMany() opera en modo ordenado: si un documento falla (por ejemplo, por _id duplicado), se detiene y no inserta los documentos restantes. Puedes desactivar este comportamiento con { ordered: false } como segundo argumento.

Consultar (Read)

find() y findOne()

find() retorna un cursor con todos los documentos que coinciden con el filtro. findOne() retorna únicamente el primer documento que coincida.
// Todos los documentos de la colección
db.usuarios.find()

// Filtrar por plan premium
db.usuarios.find({ plan: "premium" })

// Filtrar con operador de comparación: semestre >= 5
db.usuarios.find({ semestre: { $gte: 5 } })

// Múltiples condiciones (AND implícito)
db.usuarios.find({ plan: "premium", semestre: { $gte: 5 } })

// Solo el primer documento que coincida
db.usuarios.findOne({ alias: "projas3" })

Operadores de comparación frecuentes

OperadorSignificadoEjemplo
$eqIgual a{ semestre: { $eq: 5 } }
$neDistinto de{ plan: { $ne: "free" } }
$gtMayor que{ semestre: { $gt: 5 } }
$gteMayor o igual{ semestre: { $gte: 5 } }
$ltMenor que{ semestre: { $lt: 3 } }
$lteMenor o igual{ semestre: { $lte: 2 } }
$inDentro de un arreglo{ plan: { $in: ["free","premium"] } }

Ordenar y limitar resultados

// Ordenar por semestre ascendente y limitar a 10 resultados
db.usuarios.find({ plan: "premium" }).sort({ semestre: 1 }).limit(10)

// Paginación: saltar los primeros 20 y traer los siguientes 10
db.usuarios.find().skip(20).limit(10)

Proyecciones

Una proyección le indica a MongoDB qué campos incluir o excluir en el resultado. Se pasa como segundo argumento a find() o findOne().
// Incluir solo nombre y correo, excluir _id
db.usuarios.find({}, { nombre: 1, correo: 1, _id: 0 })

// Incluir varios campos junto con _id (por defecto _id siempre se incluye)
db.usuarios.find({ plan: "premium" }, { nombre: 1, programa: 1, semestre: 1 })

// Excluir un campo específico (todos los demás se incluyen)
db.usuarios.find({}, { puntos_acumulados: 0 })
No se pueden mezclar inclusiones (1) y exclusiones (0) en la misma proyección, con la excepción del campo _id. Si incluyes al menos un campo con 1, todos los demás se excluyen automáticamente.

Actualizar (Update)

updateOne()

Actualiza el primer documento que coincida con el filtro. Siempre se recomienda acompañarlo de un operador de actualización como $set.
// Actualizar el semestre de un usuario específico
db.usuarios.updateOne(
  { alias: "projas3" },
  { $set: { semestre: 4 } }
)

updateMany()

Actualiza todos los documentos que coincidan con el filtro.
// Marcar todos los usuarios como activos
db.usuarios.updateMany(
  {},
  { $set: { activo: true } }
)

Operadores de actualización comunes

OperadorDescripción
$setAsigna o crea un campo con el valor indicado
$unsetElimina un campo del documento
$incIncrementa un campo numérico
$pushAgrega un elemento al final de un arreglo
$pullElimina elementos de un arreglo que coincidan con una condición
$renameRenombra un campo

Ejemplo de clase: agregar un subdocumento con $set

Estos ejemplos provienen directamente de las notas de clase y los comandos usados en mongosh:
// Agregar un campo "estado" con un subdocumento (2 niveles)
db.users.updateMany(
  {},
  { $set: { estado: { descripción: "activo", actualizado: "Hace 1 hora" } } }
)
// Ampliar el subdocumento "estado" con un tercer nivel de anidamiento
db.users.updateMany(
  {},
  {
    $set: {
      estado: {
        descripción: "activo",
        actualizado: "Hace 1 hora",
        detalles: { detalle: "Creado por Santiago" }
      }
    }
  }
)
// Agregar un campo de tipo arreglo a un usuario específico
db.users.updateOne(
  { nombre: "Paula Rojas" },
  { $set: { aficiones: ["catar", "bailar", "presentar"] } }
)
Para incrementar un campo numérico (por ejemplo, sumar puntos) usa $inc en lugar de $set, de lo contrario tendrías que leer el valor actual antes de actualizar:
db.usuarios.updateOne(
  { alias: "projas3" },
  { $inc: { puntos_acumulados: 50 } }
)

Eliminar (Delete)

deleteOne()

Elimina el primer documento que coincida con el filtro.
db.usuarios.deleteOne({ alias: "projas3" })

deleteMany()

Elimina todos los documentos que coincidan con el filtro.
// Eliminar usuarios con plan free en semestres iniciales
db.usuarios.deleteMany({ plan: "free", semestre: { $lt: 2 } })

// ⚠️ Eliminar TODOS los documentos de la colección (sin borrar la colección)
db.usuarios.deleteMany({})
deleteMany({}) borra todos los documentos pero conserva la colección y sus índices. Para eliminar colección e índices completamente, usa db.usuarios.drop().

Contar Documentos

// Contar con filtro aplicado (consulta real en el índice + colección)
db.usuarios.countDocuments({ plan: "premium" })

// Contar todos los documentos con filtro vacío
db.usuarios.countDocuments({})

// Estimación rápida basada en metadatos (sin recorrer documentos)
// Útil para colecciones muy grandes donde la precisión exacta no es crítica
db.usuarios.estimatedDocumentCount()
MétodoVelocidadPrecisiónUso recomendado
countDocuments({})MediaExactaConteos con filtro o cuando se necesita precisión
estimatedDocumentCount()AltaAproximadaColecciones muy grandes, métricas rápidas

Tu primer CRUD

1

Selecciona o crea la base de datos

use dbcurso
2

Inserta un documento de prueba

db.usuarios.insertOne({
  user_id: 3,
  nombre: "Paula Rojas",
  alias: "projas3",
  correo: "projas3@uni.edu",
  programa: "Administración",
  semestre: 3,
  plan: "premium",
  puntos_acumulados: 0
})
3

Consulta el documento insertado

db.usuarios.findOne({ alias: "projas3" })
4

Actualiza el semestre

db.usuarios.updateOne(
  { alias: "projas3" },
  { $set: { semestre: 4 } }
)
Verifica el cambio:
db.usuarios.findOne({ alias: "projas3" }, { semestre: 1, _id: 0 })
5

Elimina el documento

db.usuarios.deleteOne({ alias: "projas3" })
Confirma que ya no existe:
db.usuarios.countDocuments({ alias: "projas3" }) // debe retornar 0

Build docs developers (and LLMs) love