MongoDB (Parte IV) — Consultando documentos, colecciones con operadores y campos específicos

Mauricio Garcia
5 min readMar 2, 2022

--

Temario

  • Introducción
  • Consultando documentos de manera general (find)
  • Consultando documentos por campo específico
  • Consultando colecciones con operadores (in, gt, gte, lt, lte, ne, and, or, not, nor)
  • Devolviendo campos específicos con find

i. Introducción

Esta entrada es la continuación de:

  • MongoDB (Parte I) — Definición, un poco de su arquitectura y base de datos de colecciones con documentos[ref]
  • MongoDB (Parte II) — Instalando mongoBD y comandos básicos [ref]
  • MongoDB (Parte III)- Iniciar mongoDB, crear una base de datos, una colección e insertar documentos [ref]

Por lo que te sugiero leerlas antes de continuar esta story.

Tenemos varias formas de consultar uno o más documentos, en esta story vamos a ver las mas populares…

ii. Consultando documentos de manera general [ref]

Para obtener todos los documentos de la colección, usamos el método db.<collection>.find({}[ref].

Entonces en consola ponemos db.users.find({}), y nos debe arrojar todos los documentos (Recuerda que es la continuación de otras stories, por lo que ya tenemos datos):

El query de arriba equivale a SELECT * from users

Para ver los datosmás amigables” podemos usar el método pretty, en la terminal ponemos db.users.find({}).pretty(); [ref]

iii. Consultando documentos por campo específico

Para buscar un registro específico, solo basta con poner el nombre del campo y el valor a buscar.

El query de arriba equivale a SELECT * from users WHERE name="Mauricio"

Buscando un valor dentro de los objetos:

Buscando un valor dentro del arreglo:

iv. Consultando colecciones con operadores

Otra forma de hacer búsqueda dentro de las colecciones, es mediante los operadores, a continuación enlisto los más populares:

Operadores de consultas de comparación

  • $in[ref]— Donde el valor sea igual a cualquier valor del arreglo

El query de arriba equivale a SELECT * from users WHERE age in (37, 31)

  • $gt [ref]— Buscar un valor mayor que >

No regresa nada, ya que no hay ningún documento que cumpla con la condición.

El query de arriba equivale a SELECT * from users WHERE age > 37

  • $gte[ref]— Buscar un valor mayor o igual que >=

El query de arriba equivale a SELECT * from users WHERE age >= 37

  • $lt[ref]— Para buscar un valor menor que <

No regresa nada, ya que no hay ningún documento que cumpla con la condición.

El query de arriba equivale a SELECT * from users WHERE age < 28

  • $lte[ref]— Para buscar un valor menor o igual que <=

El query de arriba equivale a SELECT * from users WHERE age <= 28

  • $ne[ref]— Un valor diferente a !==

Operadores de consultas lógicas

  • $and[ref]— Devuelve todos los documentos que coinciden con TODAS las validaciones.

El query de arriba equivale a SELECT * from users WHERE age <= 28 AND address_state = "Morelos"

  • $or[ref]— Devuelve todos los documentos que coinciden con AL MENOS una validación.

El query de arriba equivale a SELECT * from users WHERE address_state = "Guerrero" OR address_state = "Morelos"

  • $not[ref]— Devuelve todos los documentos que NO coinciden con la validación.

El query de arriba equivale a SELECT * from users WHERE NOT age >= 37

  • $nor[ref]— Devuelve todos los documentos que NO coincidan con TODAS las validaciones.

Para ver todos los tipos de operadores que tiene[ref].

v. Devolviendo campos específicos con find

El método find, recibe dos objetos:

  • Búsqueda que queremos (son los ejemplos que hemos visto arriba)
  • Los campos a mostrar

Entonces, si nosotros queremos mostrar de la búsqueda los campos name y age, solo basta mandarlos con un valor 1.

El campo _id no es necesario indicarlo, ya que por defecto SIEMPRE lo va a devolver, en caso que deseemos excluirlo, bastará con mandarlo con un valor 0, ejemplo:

--

--