Para la indexación de arreglos, MongoDB Search solo requiere el tipo de dato de los elementos del arreglo. No es necesario especificar que los datos están contenidos en un arreglo ([]) en la definición del índice.
Si habilitas mapeos dinámicos, MongoDB Search indexa automáticamente elementos de tipos de datos dinámicamente indexables dentro del arreglo. Para obtener más información sobre los tipos de datos que MongoDB Search indexa dinámicamente, consulta Tipos de campos de MongoDB Search.
Puedes utilizar el Editor Visual o el Editor JSON de la Interfaz de Usuario de Atlas para definir el índice de los elementos de los arreglos.
¿Cómo busca MongoDB elementos de arreglos en un índice?
MongoDB Search indexa los tipos de datos compatibles dentro de un arreglo aplanando los campos durante la indexación.
Ejemplo
Considera los siguientes documentos:
doc1 = { a: {b: [[<value1>, <value2>], <value3>] }} doc2 = { a: {b: [<value1>, <value2>, <value3>] } } doc3 = { a: [{ b: <value1>}, {b: <value2>}, {b: <value3>}] }
MongoDB Search aplana los arreglos anteriores de manera similar a lo siguiente durante la indexación:
LuceneDoc<n> = {"a.b":[<value1>,<value2>,<value3>]}
¿Cómo puedo indexar objetos en arreglos?
Para consultar campos dentro de un arreglo de documentos u objetos, es necesario utilizar el tipo de embeddedDocuments para indexar el campo que contiene el conjunto de objetos.
Define el índice para los elementos del arreglo
Para definir el índice de los elementos del arreglo, elige tu método de configuración preferido en la Interfaz de Usuario de Atlas y luego selecciona la base de datos y la colección.
Se debe hacer clic en Refine Your Index para configurar el índice.
En la sección Field Mappings, haz clic en Add Field Mapping para abrir la ventana Add Field Mapping.
Haga clic en Customized Configuration.
Seleccione el campo de tipo arreglo que desea indexar en el menú desplegable Field Name.
Haz clic en el desplegable Data Type y selecciona el tipo de dato del elemento del arreglo que deseas indexar. Para aprender a configurar las propiedades para el tipo seleccionado, consulta la documentación para el tipo seleccionado.
Haga clic en Add.
La siguiente es la sintaxis JSON para indexar elementos dentro de un arreglo. Reemplace la definición de índice por defecto por la siguiente.
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<array-field-name>": { 6 "type": "<array-element-data-type>" 7 } 8 } 9 } 10 }
Prueba un ejemplo para indexar los elementos de un arreglo
El siguiente ejemplo de definición de índice utiliza la colección sample_mflix.movies. Si ya tienes los datos de muestra cargados en tu clúster, puedes utilizar el Editor Visual o el Editor JSON en la Interfaz de Usuario de Atlas para configurar el índice. Después de seleccionar tu método de configuración preferido, selecciona la base de datos y la colección, y ajusta tu índice para agregar mapeos de campos.
La siguiente definición de índice indexa el campo genres, que contiene un arreglo de valores de string.
En la ventana Add Field Mapping, selecciona genres del menú desplegable Field Name.
Haz clic en el desplegable Data Type y selecciona String.
Mantén la configuración predeterminada para el String Properties.
Haga clic en Add.
Reemplazar la definición predeterminada del índice con la siguiente definición del índice.
1 { 2 "mappings": { 3 "fields": { 4 "genres": { 5 "type": "string" 6 } 7 } 8 } 9 }