Escribir consultas básicas de 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á a escribir consultas básicas de MongoDB, incluyendo cómo encontrar todos los documentos, realizar coincidencias exactas, utilizar operadores de consulta, seleccionar campos específicos y formatear la salida de la consulta. Comenzará recuperando todos los documentos de una colección de MongoDB utilizando el método find(), luego pasará a técnicas más avanzadas, como la búsqueda de coincidencias exactas, la utilización de operadores de consulta y la personalización de la salida. Al final de este laboratorio, tendrá una sólida comprensión de las habilidades fundamentales necesarias para trabajar con bases de datos MongoDB.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb/BasicOperationsGroup -.-> mongodb/start_mongodb_shell("Start MongoDB Shell") mongodb/BasicOperationsGroup -.-> mongodb/insert_document("Insert Document") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/QueryOperationsGroup -.-> mongodb/query_with_conditions("Query with Conditions") mongodb/QueryOperationsGroup -.-> mongodb/sort_documents("Sort Documents") mongodb/QueryOperationsGroup -.-> mongodb/project_fields("Project Fields") subgraph Lab Skills mongodb/start_mongodb_shell -.-> lab-420824{{"Escribir consultas básicas de MongoDB"}} mongodb/insert_document -.-> lab-420824{{"Escribir consultas básicas de MongoDB"}} mongodb/find_documents -.-> lab-420824{{"Escribir consultas básicas de MongoDB"}} mongodb/query_with_conditions -.-> lab-420824{{"Escribir consultas básicas de MongoDB"}} mongodb/sort_documents -.-> lab-420824{{"Escribir consultas básicas de MongoDB"}} mongodb/project_fields -.-> lab-420824{{"Escribir consultas básicas de MongoDB"}} end

Encontrar todos los documentos

En este paso, aprenderá a recuperar todos los documentos de una colección de MongoDB utilizando el método find(). Esta es una habilidad fundamental para trabajar con bases de datos MongoDB.

Primero, iniciemos el shell de MongoDB y creemos una base de datos de muestra con algunos documentos con los que trabajar:

mongosh

Una vez en el shell de MongoDB, cree una nueva base de datos y agregue algunos datos de muestra:

use bookstore
db.books.insertMany([
    { title: "Python Basics", author: "John Smith", year: 2022 },
    { title: "MongoDB Essentials", author: "Jane Doe", year: 2023 },
    { title: "Web Development", author: "Alice Johnson", year: 2021 }
])

Ahora, para encontrar todos los documentos en la colección books, utilice el método find() sin ningún parámetro:

db.books.find();

Debería ver una salida similar a esta:

[
  {
    _id: ObjectId("..."),
    title: 'Python Basics',
    author: 'John Smith',
    year: 2022
  },
  {
    _id: ObjectId("..."),
    title: 'MongoDB Essentials',
    author: 'Jane Doe',
    year: 2023
  },
  {
    _id: ObjectId("..."),
    title: 'Web Development',
    author: 'Alice Johnson',
    year: 2021
  }
]

Analicemos lo que sucedió:

  • use bookstore crea o cambia a la base de datos bookstore
  • db.books.insertMany() agrega múltiples documentos a la colección books
  • db.books.find() recupera todos los documentos de la colección

Si desea una salida más legible, puede utilizar pretty():

db.books.find().pretty();

Esto formateará la salida con saltos de línea e indentación, lo que la hace más fácil de leer.

Consultar coincidencias exactas

En este paso, aprenderá a realizar coincidencias exactas en consultas de MongoDB. A partir del paso anterior, continuaremos utilizando nuestra base de datos bookstore para demostrar la recuperación precisa de documentos.

Primero, asegúrese de estar en el shell de MongoDB y de utilizar la base de datos bookstore:

use bookstore

Para encontrar documentos con una coincidencia exacta para un campo específico, utilizará el método find() con un objeto de consulta. Vamos a buscar un libro por su título exacto:

db.books.find({ title: "Python Basics" });

Esta consulta devolverá solo el documento donde el título coincida exactamente con "Python Basics". Debería ver una salida como:

[
  {
    _id: ObjectId("..."),
    title: 'Python Basics',
    author: 'John Smith',
    year: 2022
  }
]

Ahora, probemos una coincidencia exacta en otro campo: el autor:

db.books.find({ author: "Jane Doe" });

También puede combinar múltiples condiciones de coincidencia exacta para restringir su búsqueda:

db.books.find({
  title: "MongoDB Essentials",
  author: "Jane Doe"
});

Esta consulta devolverá documentos que coincidan exactamente con el título y el autor.

Exploremos otro ejemplo con el campo year:

db.books.find({ year: 2022 });

Notas importantes sobre las coincidencias exactas:

  • La coincidencia es sensible a mayúsculas y minúsculas
  • Todo el campo debe coincidir exactamente
  • Importa el orden y la ortografía exacta

Si desea ver cuántos documentos coinciden con su consulta, utilice countDocuments():

db.books.countDocuments({ year: 2022 });

Usar operadores de consulta

En este paso, aprenderá a utilizar los operadores de consulta de MongoDB para realizar consultas más complejas y flexibles. Los operadores de consulta le permiten crear filtros más avanzados más allá de las coincidencias exactas.

Primero, asegúrese de estar en el shell de MongoDB utilizando la base de datos bookstore:

use bookstore

Agreguemos algunos libros más a nuestra colección para demostrar diferentes operadores:

db.books.insertMany([
  { title: "Advanced Python", author: "John Smith", year: 2020, price: 39.99 },
  {
    title: "Data Science Handbook",
    author: "Jane Doe",
    year: 2019,
    price: 45.5
  },
  {
    title: "Machine Learning Basics",
    author: "Alice Johnson",
    year: 2021,
    price: 55.25
  }
]);

Ahora, exploremos algunos operadores de consulta comunes:

  1. Operadores Mayor que ($gt) y Menor que ($lt):
    Encuentre los libros publicados después de 2020:
db.books.find({ year: { $gt: 2020 } });

Encuentre los libros publicados antes de 2020:

db.books.find({ year: { $lt: 2020 } });
  1. Operadores Mayor o igual que ($gte) y Menor o igual que ($lte):
    Encuentre los libros publicados en 2020 o después:
db.books.find({ year: { $gte: 2020 } });
  1. Operador Diferente de ($ne):
    Encuentre los libros no escritos por John Smith:
db.books.find({ author: { $ne: "John Smith" } });
  1. Operador En ($in):
    Encuentre los libros de autores específicos:
db.books.find({ author: { $in: ["John Smith", "Jane Doe"] } });
  1. Operador No en ($nin):
    Encuentre los libros no de estos autores:
db.books.find({ author: { $nin: ["John Smith", "Jane Doe"] } });
  1. Condiciones múltiples:
    Combine operadores para consultas más complejas:
db.books.find({
  year: { $gte: 2020 },
  price: { $lt: 50 }
});

Esta consulta encuentra los libros publicados en 2020 o después con un precio menor a 50.

Seleccionar campos específicos

En este paso, aprenderá a seleccionar y proyectar solo campos específicos de los documentos de MongoDB. Esto es útil cuando solo desea recuperar la información que necesita, lo que reduce la transferencia de datos y mejora el rendimiento de la consulta.

Primero, asegúrese de estar en el shell de MongoDB utilizando la base de datos bookstore:

use bookstore
  1. Seleccionar campos específicos:
    Para seleccionar solo ciertos campos, use el segundo argumento en el método find():
db.books.find({}, { title: 1, author: 1, _id: 0 });

Analizando la consulta:

  • El primer argumento {} significa sin filtro (seleccionar todos los documentos)
  • El segundo argumento especifica qué campos incluir
  • 1 significa incluir el campo
  • _id: 0 excluye explícitamente el campo _id predeterminado

Debería ver una salida como:

[
  { title: 'Python Basics', author: 'John Smith' },
  { title: 'MongoDB Essentials', author: 'Jane Doe' },
...
]
  1. Combinar la selección de campos con el filtrado:
    Puede combinar la selección de campos con condiciones de consulta:
db.books.find({ year: { $gt: 2020 } }, { title: 1, year: 1, _id: 0 });

Esta consulta encuentra los libros publicados después de 2020 y devuelve solo sus títulos y años.

  1. Excluir campos:
    También puede excluir campos específicos:
db.books.find({}, { price: 0 });

Esto devuelve todos los campos excepto el campo price.

  1. Proyectar campos anidados:
    Si tiene documentos anidados, puede seleccionar campos anidados específicos:
// Asumiendo una estructura de documento más compleja
db.books.find({}, { "author.name": 1, title: 1, _id: 0 });

Notas importantes:

  • No se puede mezclar inclusión y exclusión en una sola proyección (excepto para _id)
  • _id se incluye por defecto a menos que se establezca explícitamente en 0
  • Las proyecciones ayudan a reducir la cantidad de datos transferidos

Formatear la salida de la consulta

En este paso, aprenderá a formatear y manipular la salida de las consultas de MongoDB, lo que hará que sus resultados sean más legibles y útiles.

Primero, asegúrese de estar en el shell de MongoDB utilizando la base de datos bookstore:

use bookstore
  1. Impresión bonita:
    Utilice .pretty() para formatear la salida con sangría:
db.books.find().pretty();
  1. Limitar los resultados:
    Utilice .limit() para restringir el número de documentos devueltos:
db.books.find().limit(2);
  1. Ordenar los resultados:
    Utilice .sort() para ordenar sus documentos. El argumento es un objeto que especifica el campo y la dirección de ordenamiento:
// Ordenar por año en orden ascendente
db.books.find().sort({ year: 1 });

// Ordenar por año en orden descendente
db.books.find().sort({ year: -1 });
  1. Combinar métodos:
    Puede encadenar múltiples métodos de formateo:
db.books
  .find()
  .sort({ year: -1 }) // Ordenar por año descendente
  .limit(3) // Obtener los primeros 3 resultados
  .pretty(); // Formatear bonito
  1. Saltar documentos:
    Utilice .skip() para saltar un número especificado de documentos:
// Saltar los primeros 2 documentos
db.books.find().skip(2).limit(2);
  1. Contar documentos:
    Utilice .count() o countDocuments() para obtener el número total de documentos coincidentes:
// Contar todos los libros
db.books.countDocuments();

// Contar los libros publicados después de 2020
db.books.countDocuments({ year: { $gt: 2020 } });

Ejemplo práctico:
Vamos a combinar múltiples técnicas de formateo:

db.books
  .find({ year: { $gte: 2020 } })
  .sort({ price: 1 }) // Ordenar por precio ascendente
  .limit(2) // Obtener los 2 libros más baratos después de 2020
  .pretty();

Resumen

En este laboratorio, aprenderá a realizar consultas básicas de MongoDB, incluyendo encontrar todos los documentos en una colección, buscar coincidencias exactas, utilizar operadores de consulta, seleccionar campos específicos y formatear la salida de la consulta. Comenzará aprendiendo cómo recuperar todos los documentos de una colección de MongoDB utilizando el método find(), que es una habilidad fundamental para trabajar con bases de datos MongoDB. Luego, explorará cómo realizar coincidencias exactas en consultas de MongoDB, lo que le permitirá recuperar documentos con valores específicos de campo. A lo largo del laboratorio, adquirirá una sólida comprensión de las técnicas esenciales de consulta de MongoDB.