Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Cómo ejecutar MongoDB Search queries contra campos en documentos incrustados

Este tutorial demuestra cómo indexar y ejecutar queries de MongoDB Search en campos que están dentro de un arreglo de documentos, incluso cuando el arreglo de documentos está anidado. Para permitir las consultas en estos campos, indexa los campos del documento como el tipo embeddedDocuments.

El tutorial de esta página demuestra consultas contra campos en los siguientes tipos de arreglos:

  • Arreglo de documentos.

  • Arreglo de documentos dentro de un documento.

  • Arreglo de documentos dentro de un arreglo de documentos.

Antes de comenzar, asegúrese de que su clúster cumpla con los requisitos descritos en los prerrequisitos.

Expande esta sección para obtener más información sobre la colección de muestras, el índice y las consultas utilizadas en este tutorial.

Para demostrar cómo ejecutar queries en documentos incrustados, este tutorial te guía a través de los siguientes pasos:

  1. Crear una colección de muestra llamada schools con documentos incrustados en el clúster.

  2. Configure un índice de búsqueda de MongoDB con campos embeddedDocuments configurados en las siguientes rutas:

    • teachers Campo

    • teachers.classes Campo

    • clubs.sports Campo

  3. ejecutar $search queries que búsqueda documentos incrustados en la colección schools usando el compuesto con el documento incrustado y el texto.

  4. Ejecutar un $searchMeta query en un campo de documento incrustado para obtener un recuento.

La colección de muestras schools contiene tres documentos. Cada documento contiene el name y mascot de la escuela, el ``primero`` y el last nombre de cada profesor, el classes que enseñan, incluyendo el subject y el grade, y los varios clubs disponibles.

El índice para esta colección especifica los siguientes documentos en arreglos:

  • Los documentos en los arreglos de las rutas teachers y teachers.classes se indexan como documentos incrustados, y los campos dentro de los documentos se indexan dinámicamente.

  • Los documentos en los arreglos de la ruta teachers también se indexan como el tipo documento para admitir resaltar, y los campos dentro de los documentos se indexan dinámicamente.

  • El documento en el campo clubs se indexa como tipo documento con mapeos dinámicos habilitados, y los arreglos de documentos en el campo clubs.sports se indexan como tipo embeddedDocuments con mapeos dinámicos habilitados.

Las queries de muestra buscan los documentos incrustados en la colección schools. Las queries utilizan las siguientes etapas del pipeline:

  • $search para buscar en la colección.

  • $project para incluir y excluir campos de la colección, y añadir un campo llamado score en los resultados. Para las queries que permiten resaltar, la etapa $project también añade un nuevo campo llamado highlights, que contiene la información de resaltar.

Los tutoriales demuestran las siguientes consultas:

Esta query demuestra una búsqueda en un campo dentro de un arreglo de documentos.

Buscar en la ruta teachers profesores con el nombre John y especificar una preferencia por profesores con el apellido Smith. También permite resaltar en el campo de nombre last.

Esta query demuestra una búsqueda en un campo dentro de un arreglo de documentos que está anidada dentro de un documento.

Busca escuelas que tengan clubes deportivos que ofrezcan a los estudiantes la oportunidad de jugar ya sea dodgeball o frisbee en la ruta clubs.sports.

Esta query demuestra una query compuesta que busca en campos dentro de los siguientes arreglos:

  • Arreglo de documentos.

  • Arreglo de documentos anidado dentro de un arreglo de documentos.

Busca escuelas que tengan un maestro enseñando 12th grado science clase en el camino teachers.classes, dando preferencia a las escuelas con maestros de apellido Smith que enseñan esa clase. También permite resaltar en el campo subject dentro del arreglo classes de los documentos, que está anidado dentro del arreglo teachers de documentos.

Nota

El tutorial para su clúster también incluye una consulta para obtener un recuento de la cantidad de escuelas que ofrecen clases en cada $searchMeta grado.

Este tutorial muestra ejemplos de consultas de búsqueda de MongoDB en campos de documentos incrustados. Para obtener más información sobre estas consultas, consulte Acerca de este tutorial.