6. Insertar documentos

Hasta ahora solo has consultado los datos importados. Es hora de aprender a crear tus propios documentos.

Insertar un documento

Para insertar un solo documento usa insertOne:

db.listings.insertOne({
    name: "Mi apartamento en Barcelona",
    neighbourhood_group_cleansed: "EIXAMPLE",
    room_type: "Entire home/apt",
    accommodates: 4,
    price: "$75.00"
})

MongoDB devuelve un objeto con el _id generado automáticamente:

{
    acknowledged: true,
    insertedId: ObjectId("507f1f77bcf86cd799439011")
}

Insertar múltiples documentos

Para insertar varios documentos a la vez usa insertMany:

db.listings.insertMany([
    {
        name: "Habitación privada en Gràcia",
        neighbourhood_group_cleansed: "EXTRAMURS",
        room_type: "Private room",
        accommodates: 2,
        price: "$40.00"
    },
    {
        name: "Estudio en Ciutat Vella",
        neighbourhood_group_cleansed: "CIUTAT VELLA",
        room_type: "Entire home/apt",
        accommodates: 2,
        price: "$65.00"
    }
])

MongoDB devuelve los IDs de todos los documentos insertados.

Colecciones automáticas

Si la colección no existe, se creará automáticamente al insertar el primer documento:

// Esta colección no existe aún
db.mis_propiedades.insertOne({ name: "Mi primera propiedad" })
// Ahora existe

El campo _id

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

// MongoDB genera el _id automáticamente
db.listings.insertOne({ name: "Casa de playa" })

// Puedes proporcionar tu propio _id
db.listings.insertOne({
    _id: "mi-id-personalizado",
    name: "Apartamento centro"
})

Importante: El _id debe ser único. Si intentas insertar un documento con un _id que ya existe, la operación fallará.

Validación de datos

MongoDB no valida automáticamente tus datos. Puedes insertar documentos con diferentes estructuras en la misma colección:

// Todos válidos en la misma colección
db.pruebas.insertMany([
    { name: "Ana", age: 28 },
    { name: "Carlos", city: "Madrid" },  // Sin campo age
    { email: "laura@example.com" }        // Sin campos name ni age
])

Esto es flexible, pero debes tener cuidado con la consistencia de tus datos.

Actividad 1

Practica insertando nuevos listados en la base de datos de Airbnb:

  1. Inserta un nuevo listado con los campos: name, neighbourhood_group_cleansed, room_type, accommodates y price
  2. Inserta tres listados a la vez usando insertMany
  3. Inserta un listado proporcionando tu propio _id (por ejemplo, "mi-listado-1")
  4. Crea una nueva colección llamada mis_favoritos insertando un documento con los campos que quieras
  5. Verifica que tus documentos se insertaron correctamente buscándolos con find()

Pro:

  1. Inserta un listado con un campo adicional que no existe en los demás (por ejemplo, destacado: true)
  2. Intenta insertar dos documentos con el mismo _id. ¿Qué error obtienes?
  3. Inserta 5 reseñas en la colección reviews para uno de tus listados (recuerda incluir listing_id, date y reviewer_id)

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: 🐱