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 lo habilitas 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 indexa MongoDB los elementos de una matriz de búsqueda?
MongoDB Search indexa los tipos de datos admitidos dentro de una matriz 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 una matriz de documentos u objetos, debe utilizar el tipo embeddedDocuments para indexar el campo que contiene la matriz de objetos.
Definir el índice para los elementos de la matriz
Para definir el índice de los elementos de la matriz, elija su método de configuración preferido en la interfaz de usuario de Atlas y luego seleccione 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 matriz 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 tiene los datos de muestra cargados en su clúster, puede usar el Editor visual o el Editor JSON de la interfaz de usuario de Atlas para configurar el índice. Después de seleccionar el método de configuración preferido, seleccione la base de datos y la colección, y refine el índice para agregar asignaciones de campos.
La siguiente definición de índice indexa el campo genres, que contiene una matriz de valores de cadena.
En la ventana Add Field Mapping, selecciona genres del menú desplegable Field Name.
Haz clic en el desplegable Data Type y selecciona String.
Mantenga la configuración predeterminada para 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 }