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 habilitar consultas contra estos campos, indexa los campos del documento como el tipoembeddedDocuments.
El tutorial de esta página demuestra consultas contra campos en los siguientes tipos de arreglos:
Arreglo de documentos.
Matriz 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.
Para demostrar cómo ejecutar queries en documentos incrustados, este tutorial te guía a través de los siguientes pasos:
Crea una colección de muestras denominada
schoolscon documentos incrustados en tu clúster.Configure un índice de búsqueda de MongoDB con campos embeddedDocuments configurados en las siguientes rutas:
teachersCampoteachers.classesCampoclubs.sportsCampo
ejecutar
$searchqueries que búsqueda documentos incrustados en la colecciónschoolsusando el compuesto con el documento incrustado y el texto.Ejecutar un
$searchMetaquery en un campo de documento incrustado para obtener un recuento.
Acerca de la colección
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.
Acerca del índice
El índice para esta colección especifica los siguientes documentos en arreglos:
Los documentos en los arreglos de las rutas
teachersyteachers.classesse indexan como documentos incrustados, y los campos dentro de los documentos se indexan dinámicamente.Los documentos en las matrices en la
teachersruta también se indexan como tipo de documento para admitir el resaltado, y los campos dentro de los documentos se indexan dinámicamente.El documento en el campo
clubsse indexa como tipo documento con mapeos dinámicos habilitados, y los arreglos de documentos en el campoclubs.sportsse indexan como tipoembeddedDocumentscon mapeos dinámicos habilitados.
Sobre las consultas
Las consultas de ejemplo buscan en los documentos incrustados de la colección schools. Utilizan las siguientes etapas de canalización:
$searchpara buscar en la colección.$projectpara incluir y excluir campos de la colección, y añadir un campo llamadoscorea los resultados. Para las consultas que permiten el resaltado, la etapa también añade un nuevo$projectcampohighlightsllamado, que contiene la información de resaltado.
Los tutoriales demuestran las siguientes consultas:
Esta consulta demuestra una búsqueda en un campo dentro de una matriz de documentos.
Busca en la teachers ruta profesores con nombre John y especifica una preferencia por profesores con Smith apellido. También permite resaltar en el last campo de nombre.
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 tu clúster también incluye una $searchMeta query para obtener el recuento del número de escuelas que ofrecen clases en cada grado.
Ejecuta consultas contra documentos incrustados
Este tutorial muestra consultas de muestra de MongoDB Search en campos dentro de documentos incrustados. Para aprender más sobre estas consultas, consulte Acerca de este tutorial.