Fundamentos de MongoDB

1

Consultas Avanzadas en MongoDB

2

Bases de Datos NoSQL: Tipos y Escalabilidad con MongoDB

3

Documentos y Colecciones en MongoDB

4

Creación de Bases de Datos NoSQL con MongoDB Atlas y Local

5

Consultas Básicas con Mongo Compass y Mongo Atlas

6

Consultas MongoDB en Visual Studio Code: Plugin y Uso Práctico

7

Instalación de Docker en diferentes sistemas operativos

8

Ejecutar MongoDB en Docker: Guía paso a paso

9

Conexión a MongoDB usando Mongo SH en Docker

10

Diferencias clave entre JSON y BSON para manejo de datos en MongoDB

CRUD

11

CRUD en MongoDB: Cómo Insertar Documentos

12

CRUD e Inserción de Documentos en MongoDB

13

Actualización de Documentos en MongoDB usando Operadores

14

Actualización Masiva en MongoDB: UpdateMany y Operadores Básicos

15

Actualización y manejo de arrays en MongoDB

16

Manejo de Upsert en MongoDB: Insertar o Actualizar Datos de IoT

17

Eliminación de Documentos en MongoDB: deleteOne y deleteMany

Operadores

18

Consultas en MongoDB: Uso de Operadores de Comparación

19

Comparadores Numéricos en MongoDB: MayorQue, MenorQue y Más

20

Consultas Avanzadas en MongoDB: Uso de Operadores en Queries y Updates

21

Búsquedas avanzadas con Regex en MongoDB

22

Consulta de Proyección en MongoDB: Selección de Campos Específicos

23

Operadores de Consulta en Arrays con MongoDB

24

Operadores lógicos en MongoDB: AND, OR, NOR y NOT

25

Consultas Avanzadas en MongoDB Utilizando Expressive Operator

26

Consultas a Arrays y Subdocumentos en MongoDB

Herramientas comunes al trabajar con MongoDB

27

Técnicas de Aggregation Framework en MongoDB para Ciencia de Datos

28

Paginación eficiente con MongoDB: Técnicas y Estrategias

29

Tableros Interactivos con Mongo Atlas Charts

30

Modelado de Datos con MongoDB para Negocios

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Consultas a Arrays y Subdocumentos en MongoDB

26/30
Recursos

¿Cómo realizar consultas en MongoDB sobre Arrays y subdocumentos?

Explorar la base de datos de MongoDB nos ofrece la oportunidad de interactuar con Arrays y subdocumentos de una manera extremadamente flexible. La habilidad para navegar y realizar consultas sobre estas estructuras complejas es una ventaja esencial para cualquier profesional que trabaje con bases de datos NoSQL. Profundicemos en cómo abordar estas consultas de manera eficiente.

¿Cómo hacer una búsqueda básica en MongoDB?

Para empezar, es importante entender el método findOne. Este método nos permite obtener el primer documento que coincide con un criterio específico o simplemente nos devuelve el primer documento de una colección si no proporcionamos ningún criterio. Aquí un ejemplo básico:

db.collection.findOne({})

Este comando devuelve el primer documento de la colección.

¿Cómo consultar subdocumentos?

Los subdocumentos se manejan como atributos de un documento normal pero con una diferencia clave: pueden ser accedidos directamente mediante una notación de puntos. Por ejemplo, para acceder a un subdocumento llamado Start Station Location y consultar su tipo, puedes utilizar la siguiente consulta:

db.collection.find({ "Start Station Location.Type": "Point" })

Esta consulta busca documentos donde el campo Type del subdocumento Start Station Location sea igual a "Point".

¿Cómo acceder a elementos específicos de un Array?

Los Arrays en MongoDB también permiten una gran flexibilidad. Por ejemplo, si deseas acceder a la primera posición de un Array dentro de un documento y luego realizar una consulta, puedes utilizar el índice apropiado:

db.collection.find({ "Relationships.0.LastName": "Zuckerberg" })

Esta consulta explora el primer elemento del Array Relationships en busca de un subdocumento cuyo apellido sea "Zuckerberg".

¿Cómo utilizar $elemMatch para buscar en cualquier posición de un Array?

Si necesitas encontrar un elemento sin importar su posición en el Array, puedes usar el operador $elemMatch. Este operador es útil cuando no nos importa la posición del elemento, como en el caso siguiente:

db.collection.find({ "Relationships": { $elemMatch: { "FirstName": "Mark" } } })

Esta consulta busca cualquier documento donde haya al menos un elemento en el Array Relationships cuyo FirstName sea "Mark".

¿Qué más podemos hacer con consultas y Arrays?

Además de encontrar elementos, podemos hacer proyecciones que nos permitan incluir o excluir ciertos campos en el resultado de nuestras consultas. Por ejemplo, si deseamos únicamente ver el nombre de la compañía y sus relaciones, haríamos lo siguiente:

db.collection.find(
  { "Relationships.0.LastName": "Zuckerberg" },
  { "Name": 1, "Relationships": 1 }
)

Esta consulta devolverá únicamente los campos Name y Relationships para documentos que coincidan con el criterio de búsqueda.

Siguiendo estas técnicas, se pueden realizar fácilmente consultas avanzadas que te permitirán explorar tus bases de datos MongoDB de manera efectiva. Con práctica y familiarización, dominarás las habilidades necesarias para manejar consultas de Arrays y subdocumentos, haciendo de esta una herramienta poderosa en tu kit técnico. ¡Continúa explorando y aplicando tus conocimientos para sacar el máximo provecho de MongoDB!

Aportes 9

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Usando implicitamente el operador $elemMatch

use("sample_training")
db.companies.find({
  "relationships.person.first_name": "Mark"
}, {
  name: 1,
  relationships: 1,
}).count() // 523

Las “query in subdocs” en MongoDB se refieren a la capacidad de realizar consultas o búsquedas en documentos secundarios (subdocumentos) dentro de un documento principal.

En MongoDB, los documentos pueden contener otros documentos anidados, lo que permite estructurar la información de manera más compleja y jerárquica. Cuando se realizan consultas en subdocumentos, se pueden buscar documentos que cumplan ciertas condiciones en campos específicos de los subdocumentos, en lugar de buscar solo en los campos del documento principal.

Para realizar una consulta en subdocumentos, se utiliza el operador de punto (".") para indicar el campo específico del subdocumento que se desea buscar. Por ejemplo, si se tiene un documento que contiene un subdocumento “address” que a su vez tiene un campo “city”, se puede buscar todos los documentos que tengan una ciudad específica utilizando la siguiente consulta:


db.collection.find({"address.city": "New York"})

Esta consulta buscará todos los documentos que contengan un subdocumento “address” con el campo “city” igual a “New York”.

Las consultas en subdocumentos pueden ser muy útiles en situaciones en las que se tiene información estructurada jerárquicamente, como en la información de direcciones de un cliente en un sistema de comercio electrónico.

¡Es verdad!

Idolo!!!

```js use("sample_training") // Buscamos sobre la posición del array de relationships en este caso 0 que son los CEO db.companies.find({ "relationships.0.person.last_name": "Zuckerberg" }, { name: 1, relationships : 1 }) // Buscamos sobre la posición del array de relationships en este caso 0 que son los CEO db.companies.find({ "relationships.0.person.first_name": "Mark" }, { name: 1, relationships : 1 }) use("sample_training") // Buscamos todos los documentos que tengan un subdocumento con la propiedad person.first_name con el valor "Mark" db.companies.find({ relationships: { $elemMatch: { "person.first_name": "Mark" } } }, { name: 1, relationships : 1 }).count() ```
Y como podria ser la consulta, si se quiere que presente solo los subdocumentos que hayan hecho match y no todo los subdocumentos del match. Como por ejemplo el del caso de las compañias solo deberia presentar los sub-documentos que haga relacion con la condicion que se especifique.
Para realizar una consulta en MongoDB que verifique que el título de la relación sea "CEO" y que el primer nombre sea "Marck", puedes usar la siguiente sintaxis: ```javascript db.companies.find({ "relationships": { "$elemMatch": { "title": "CEO", "first_name": "Marck" } } }); ``` Aquí, `"$elemMatch"` permite buscar en el array `relationships` para asegurarte de que al menos un elemento cumpla ambas condiciones. Recuerda que la estructura puede variar según tu dataset, pero esta es la forma general de abordar la consulta.
```js /** * ? Busca los documentos donde: * * La estación de inicio sea igual a la estación de destino * * La duración del viaje sea mayor a 1200 * * El tipo de usuario sea Costumer * * El año de nacimiento sea >= a 1980 */ use("sample_training"); db.trips.find({ $expr: { $and: [ { $eq: ["$start station id", "$end station id"] }, { $gte: ["$tripduration", 1200] }, { $eq: ["$usertype", "Costumer"] }, { $gte: ["$birth year", 1980] }], }, }); ```

5:35 (Dicen que es un Reptil)
jajajajj