Este tutorial muestra cómo indexar y ejecutar consultas de búsqueda de MongoDB en campos dentro de una matriz de documentos, incluso cuando la matriz de documentos está anidada. Para habilitar las consultas en estos campos, indexe los campos del documento como... tipoembeddedDocuments.
El tutorial de esta página demuestra consultas sobre campos en los siguientes tipos de matrices:
Matriz de documentos.
Matriz de documentos dentro de un documento.
Matriz de documentos dentro de una matriz de documentos.
Antes de comenzar,asegúrese de que su clúster cumpla con los requisitos descritos en Requisitos previos.
Para demostrar cómo ejecutar consultas en documentos incrustados, este tutorial lo guiará a través de los siguientes pasos:
Crea una colección de muestras denominada
schoolscon documentos incrustados en su clúster.Configurar 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.Ejecute una consulta en un campo de documento incrustado para obtener un
$searchMetarecuento.
Acerca de la colección
La colección de muestra schools contiene tres documentos. Cada documento contiene los nombres name y mascot de la escuela, el nombre y el apellido last de cada profesor, los classes que enseñan (incluidos los subject y grade) y los diversos clubs disponibles.
Acerca del índice
El índice de esta colección especifica los siguientes documentos en matrices:
Los documentos en las matrices en las rutas
teachersyteachers.classesse indexan como embeddedDocuments, 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.
Acerca de 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 dodgeball o frisbee en la ruta clubs.sports.
Esta consulta demuestra una consulta compuesta que busca campos dentro de las siguientes matrices:
Matriz de documentos.
Matriz de documentos anidados dentro de una matriz de documentos.
Busca escuelas con un profesor 12th impartiendo la science clase de grado en la teachers.classes ruta, priorizando las escuelas con profesores de apellido Smith que impartan esa clase. También permite resaltar el subject campo dentro de la classes matriz de documentos, que está anidada dentro de la teachers matriz 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.
Ejecutar consultas contra documentos incrustados
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.