3. Conceptos básicos

Vamos a trabajar con conceptos fundamentales de MongoDB.

Bases de datos y colecciones

En MongoDB, una database contiene múltiples collections, y cada collection contiene múltiples documents.

Para crear o cambiar a una base de datos:

use learn

No importa que la base de datos no exista aún. Se creará automáticamente cuando insertes el primer documento.

Para ver todas las bases de datos:

show dbs

Para ver las colecciones de la base de datos actual:

show collections

Para ver información de la base de datos actual:

db.stats()

Documentos

Los documentos son objetos JSON (técnicamente BSON) que almacenan tus datos. Cada documento debe tener un campo _id único.

Ejemplo de documento:

{
    _id: ObjectId("507f1f77bcf86cd799439011"),
    name: "Aurora",
    age: 25,
    email: "aurora@example.com",
    hobbies: ["lectura", "programación"],
    address: {
        city: "Madrid",
        country: "España"
    }
}

Observa que:

  • Los campos pueden ser de diferentes tipos (strings, números, arrays, objetos)
  • Puedes tener arrays directamente
  • Puedes tener documentos embebidos (objetos dentro de objetos)
  • El _id se genera automáticamente si no lo proporcionas

El campo _id

Cada documento debe tener un campo _id único. Si no lo proporcionas, MongoDB genera automáticamente un ObjectId.

Un ObjectId es un identificador de 12 bytes que garantiza unicidad:

ObjectId("507f1f77bcf86cd799439011")

Puedes proporcionar tu propio _id:

db.users.insertOne({
    _id: 1,
    name: "María"
})

Pero normalmente dejarás que MongoDB lo genere automáticamente.

Consultas básicas

Para trabajar con los datos necesitas conocer estos comandos fundamentales:

countDocuments: cuenta el número de documentos en una colección

// Contar todos los documentos
db.listings.countDocuments()

// Contar con filtro (lo veremos más adelante)
db.listings.countDocuments({ room_type: "Entire home/apt" })

stats: obtiene estadísticas detalladas de una colección

db.listings.stats()

Verás información como:

  • Número de documentos (count)
  • Tamaño total de los datos (size)
  • Tamaño promedio de cada documento (avgObjSize)
  • Número de índices
Actividad 1

Ahora que has importado los datos de Airbnb, vamos a explorar su estructura básica:

  1. Cuenta cuántos listados hay en la colección listings
  2. Cuenta cuántas reseñas hay en la colección reviews
  3. Usa stats() para ver las estadísticas de la colección listings

Pro:

  1. Compara el número de documentos de listings vs reviews. ¿Cuál tiene más documentos?
  2. Usando stats(), calcula cuántas reseñas hay de media por cada listado (divide el total de reviews entre el total de listings)
  3. ¿Qué colección ocupa más espacio en disco? Usa el campo size de stats() para comparar

Soluciones

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Desafíos de programación atemporales y multiparadigmáticos

Desafíos de programación atemporales y multiparadigmáticos

Te encuentras ante un librillo de actividades, divididas en 2 niveles de dificultad. Te enfrentarás a los casos más comunes que te puedes encontrar en pruebas técnicas o aprender conceptos elementales de programación.

Buy the book

Will you buy me a coffee?

Comments

There are no comments yet.

Visitors in real time

You are alone: 🐱