Para indexar matrices, MongoDB Search solo requiere el tipo de datos de los elementos de la matriz. No es necesario especificar que los datos están contenidos en una matriz ([]) en la definición del índice.
Si activas Mapeos dinámicos: MongoDB Search indexa automáticamente elementos de tipos de datos indexables dinámicamente dentro del array. Para obtener más información sobre los tipos de datos que MongoDB Search indexa dinámicamente, consulte Tipos de campos de MongoDB Search.
Puede utilizar el Editor visual o el Editor JSON en la interfaz de usuario de Atlas para definir el índice de los elementos en las matrices.
¿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
Considere 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 las matrices anteriores de manera similar a lo siguiente durante la indexación:
LuceneDoc<n> = {"a.b":[<value1>,<value2>,<value3>]}
¿Cómo puedo indexar objetos en matrices?
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.
Definir el índice para los elementos de la matriz
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.
Haga clic Refine Your Index para configurar su í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.
Lo siguiente es el SintaxisJSON para indexar elementos dentro de un array. Reemplace la definición de índice predeterminada 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 }
Pruebe un ejemplo para indexar elementos de una matriz
El siguiente ejemplo de definición de índice utiliza la colección sample_mflix.movies. Si ya tienes los datos de muestras cargados en tu clúster, puedes usar 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 perfecciona 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 }