Insertar datos en MongoDB

MongoDBMongoDBBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo insertar datos en MongoDB utilizando varios métodos y explorar técnicas básicas de manipulación de datos. A través de una serie de ejercicios prácticos, practicarás la inserción de documentos individuales y múltiples, el manejo de posibles errores y la verificación de la integridad de los datos utilizando la shell de MongoDB.

El laboratorio cubre las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) esenciales, centrándose en las estrategias de inserción de documentos. Crearás una base de datos de una librería, insertarás documentos con diferentes estructuras, manejarás restricciones de índice único y validarás esquemas de documentos. Al final de este laboratorio, tendrás una comprensión sólida de cómo agregar y administrar datos de manera efectiva en MongoDB.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb(("MongoDB")) -.-> mongodb/IndexingGroup(["Indexing"]) mongodb(("MongoDB")) -.-> mongodb/ErrorHandlingGroup(["Error Handling"]) mongodb(("MongoDB")) -.-> mongodb/RelationshipsGroup(["Relationships"]) mongodb/BasicOperationsGroup -.-> mongodb/create_database_collection("Create Database and Collection") mongodb/BasicOperationsGroup -.-> mongodb/insert_document("Insert Document") mongodb/BasicOperationsGroup -.-> mongodb/bulk_insert_documents("Bulk Insert Documents") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/QueryOperationsGroup -.-> mongodb/query_with_conditions("Query with Conditions") mongodb/QueryOperationsGroup -.-> mongodb/project_fields("Project Fields") mongodb/IndexingGroup -.-> mongodb/create_index("Create Index") mongodb/ErrorHandlingGroup -.-> mongodb/handle_write_errors("Handle Write Errors") mongodb/RelationshipsGroup -.-> mongodb/create_document_references("Create Document References") subgraph Lab Skills mongodb/create_database_collection -.-> lab-420696{{"Insertar datos en MongoDB"}} mongodb/insert_document -.-> lab-420696{{"Insertar datos en MongoDB"}} mongodb/bulk_insert_documents -.-> lab-420696{{"Insertar datos en MongoDB"}} mongodb/find_documents -.-> lab-420696{{"Insertar datos en MongoDB"}} mongodb/query_with_conditions -.-> lab-420696{{"Insertar datos en MongoDB"}} mongodb/project_fields -.-> lab-420696{{"Insertar datos en MongoDB"}} mongodb/create_index -.-> lab-420696{{"Insertar datos en MongoDB"}} mongodb/handle_write_errors -.-> lab-420696{{"Insertar datos en MongoDB"}} mongodb/create_document_references -.-> lab-420696{{"Insertar datos en MongoDB"}} end

Insertar un solo documento

¡Bienvenido al laboratorio práctico de MongoDB! En este primer paso, exploraremos cómo insertar documentos en una colección de MongoDB. MongoDB es una potente base de datos NoSQL que almacena datos en documentos flexibles, similares a JSON, lo que lo hace increíblemente versátil para diversas necesidades de aplicaciones.

Comprender los conceptos básicos de MongoDB

Antes de comenzar, discutamos brevemente lo que vamos a hacer. Crearemos una base de datos de una librería y aprenderemos cómo insertar documentos que representen libros. Esto te ayudará a entender las técnicas fundamentales de inserción de documentos en MongoDB.

Conectarse a MongoDB

Primero, abre una terminal y conéctate a MongoDB utilizando mongosh:

mongosh

Deberías ver el indicador de la shell de MongoDB, lo que indica una conexión exitosa.

Crear una base de datos y una colección

Creemos una nueva base de datos llamada bookstore y una colección llamada books:

use bookstore
db.createCollection("books")

Ejemplo de salida:

switched to db bookstore
{ ok: 1 }

Insertar un solo documento

Ahora, insertemos un solo documento que represente un libro en la colección books:

db.books.insertOne({
  title: "The Great Gatsby",
  author: "F. Scott Fitzgerald",
  year: 1925,
  genres: ["Classic", "Fiction"]
})

Ejemplo de salida:

{
  acknowledged: true,
  insertedId: ObjectId("...unique-object-id...")
}

Observa cómo MongoDB genera automáticamente un _id único para cada documento. Esto ayuda a garantizar que cada documento se pueda identificar de manera única en la colección.

Inserción masiva de documentos

En este paso, expandiremos nuestra colección de la librería aprendiendo cómo insertar múltiples documentos simultáneamente. La inserción masiva es una forma eficiente de agregar múltiples registros en una sola operación.

Prepararse para la inserción masiva

Seguiremos trabajando en la base de datos bookstore y agregaremos múltiples documentos de libros a la vez:

use bookstore

Insertar múltiples documentos

Utiliza el método insertMany() para agregar varios documentos de libros:

db.books.insertMany([
  {
    title: "1984",
    author: "George Orwell",
    year: 1949,
    genres: ["Dystopian", "Science Fiction"]
  },
  {
    title: "To Kill a Mockingbird",
    author: "Harper Lee",
    year: 1960,
    genres: ["Classic", "Fiction"]
  },
  {
    title: "Pride and Prejudice",
    author: "Jane Austen",
    year: 1813,
    genres: ["Romance", "Classic"]
  }
])

Ejemplo de salida:

{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId("..."),
    '1': ObjectId("..."),
    '2': ObjectId("...")
  }
}

Verificar los documentos insertados

Confirmemos la cantidad de documentos en la colección:

db.books.countDocuments()

Ejemplo de salida:

4

Esto muestra que ahora tenemos 4 documentos en nuestra colección.

Verificar los resultados de la inserción

En este paso, exploraremos cómo recuperar y examinar los documentos que hemos insertado en nuestra colección de MongoDB. Esto es crucial para verificar los datos y realizar consultas.

Encontrar todos los documentos

Utiliza el método find() para recuperar todos los documentos de la colección books:

use bookstore
db.books.find()

La salida de ejemplo mostrará todos los detalles de los documentos con su información completa.

Encontrar documentos específicos

Recupera documentos utilizando criterios específicos:

## Find books published before 1950
db.books.find({ year: { $lt: 1950 } })

La salida de ejemplo mostrará los libros publicados antes de 1950.

Encontrar documentos con campos específicos

Recupera campos específicos de los documentos:

## Find titles and authors of classic books
db.books.find(
  { genres: "Classic" },
  { title: 1, author: 1, _id: 0 }
)

Este comando devuelve solo los títulos y autores de los libros clásicos, excluyendo el campo _id.

Manejar errores de inserción

En este paso, aprenderemos cómo manejar los posibles errores al insertar documentos, lo cual es esencial para mantener la integridad de los datos en tu base de datos de MongoDB.

Crear un índice único

Primero, crea un índice único en el campo title para evitar títulos de libros duplicados:

use bookstore
db.books.createIndex({ title: 1 }, { unique: true })

Ejemplo de salida:

title_1

Intentar insertar un documento duplicado

Intenta insertar un documento con un título que ya existe:

db.books.insertOne({
  title: "1984",
  author: "George Orwell",
  year: 1949,
  genres: ["Dystopian", "Science Fiction"]
})

Esto resultará en un error de clave duplicada.

Manejar errores de inserción con try-catch

Utiliza el manejo de errores para gestionar los intentos de inserción:

try {
  db.books.insertOne({
    title: "1984",
    author: "George Orwell",
    year: 1949,
    genres: ["Dystopian", "Science Fiction"]
  })
} catch (e) {
  print("Error inserting document:", e.message)
}

Este enfoque demuestra un manejo elegante de errores durante la inserción de documentos.

Verificar la integridad de los datos

En nuestro último paso, verificaremos la integridad de los datos de nuestra colección de MongoDB, asegurándonos de que nuestros documentos se almacenen correctamente y cumplan con los criterios definidos.

Contar documentos

Verifica el número total de documentos:

use bookstore
db.books.countDocuments()

Comprobar la existencia de un documento específico

Utiliza findOne() para verificar un documento específico:

db.books.findOne({ title: "To Kill a Mockingbird" })

Validar el esquema de la colección

Crea una regla de validación para garantizar la estructura de los documentos:

db.runCommand({
  collMod: "books",
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["title", "author", "year"],
      properties: {
        title: {
          bsonType: "string",
          description: "must be a string and is required"
        },
        author: {
          bsonType: "string",
          description: "must be a string and is required"
        },
        year: {
          bsonType: "int",
          minimum: 1000,
          maximum: 2023,
          description: "must be an integer between 1000 and 2023"
        }
      }
    }
  }
})

Este paso asegura que nuestros documentos mantengan una estructura consistente y válida.

Resumen

En este laboratorio, has aprendido con éxito cómo insertar documentos en MongoDB utilizando diversas técnicas. Comenzaste insertando un solo documento y luego avanzaste a inserciones masivas con múltiples documentos. Exploraste métodos para encontrar y recuperar documentos, manejar posibles errores de inserción y validar la integridad de los datos utilizando índices únicos y validación de esquemas JSON.

Las habilidades clave que has adquirido incluyen el uso de los métodos insertOne() e insertMany(), la creación de índices únicos, la implementación de estrategias de manejo de errores y la verificación de las estructuras de los documentos. Estas operaciones CRUD (Crear, Leer, Actualizar, Eliminar) fundamentales proporcionan una base sólida para trabajar con MongoDB, lo que te permite administrar y manipular datos de manera efectiva en bases de datos NoSQL.