MongoDB (Parte IV) — Consultando documentos, colecciones con operadores y campos específicos
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 datos “má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:
En la siguiente entrega vamos a ver MongoDB (Parte V) — Actualizando un documento (updateOne, updateMany, replaceOne)
La entrega pasada vimos MongoDB (Parte III)- Iniciar mongoDB, crear una base de datos, una colección e insertar documentos
Bibliografía y links que te puede interesar…
Iconos e imágenes…