Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Usar vistas con MongoDB Search

Puede crear un índice de búsqueda de MongoDB en un Ver para transformar documentos y colecciones. Esto permite indexar parcialmente una colección, admitir tipos de datos o modelos de datos incompatibles y mucho más.

Los siguientes ejemplos utilizan el sample_mflix y sample_airbnb bases de datos de muestra.

Nota

Desambiguación

Esta página describe las vistas estándar. Para obtener más información sobre las vistas materializadas bajo demanda, consulte Vistas materializadas bajo demanda.

Para obtener más información sobre las diferencias entre los tipos de vista, consulte Comparación con vistas materializadas a pedido.

Debe utilizar MongoDB 8.0 o superior.

Para editar una vista, debe tener un rol de administrador de usuario y utilizar el collMod comando de base de datos.

  • MongoDB Search admite vistas con las siguientes etapas:

  • Los nombres de índice deben ser únicos en una colección de origen y en todas sus vistas.

  • MongoDB Search no admite definiciones de vistas con operadores que generan resultados dinámicos, como la $$USER_ROLES variable del sistema y el $rand operador de agregación.

  • Las consultas de búsqueda de MongoDB devuelven los documentos originales tal como aparecen en la colección de origen.

  • Para recuperar el documento transformado, use la storedSource opción.

Para crear una Vista, tu rol debe tener el privilegio de createCollection.

Los siguientes ejemplos muestran cómo crear una vista, indexar parcialmente documentos y ejecutar consultas sobre la vista utilizando el índice.

El siguiente ejemplo actualiza la vista movies_ReleasedAfter2000 de MongoDB para las películas anteriores a 2000.

db.runCommand(
{
collMod: "movies_ReleasedAfter2000",
viewOn: "movies",
"pipeline": [
{
$match: {
$expr: {
$lt: [
"$released",
ISODate("2000-01-01T00")
]
}
}
}
]
}
)

Después de ejecutar este comando, MongoDB Search detecta automáticamente el cambio en la definición de la Vista y realiza la reindexación sin tiempo de inactividad.

El siguiente ejemplo retorna las pipelines en la Vista movies_ReleasedAfter2000.

db.getCollectionInfos({ name: "movies_ReleasedAfter2000" })[0].options.pipeline
[
{
'$match': {
'$expr': { '$gt': [ '$released', ISODate('2000-01-01T00:00:00.000Z') ] }
}
}
]

Las transformaciones de vista muy complejas pueden causar un rendimiento más lento cuando Atlas lee la vista para filtrar y transformar la colección de origen. En este escenario, se debe considerar crear una vista materializada para evitar una carga adicional de replicación en Atlas. Para evitar la latencia de query causada por la transformación de la vista, se puede consultar la colección de origen directamente para recuperar los documentos originales.

Los índices cambian al estado FAILED en los siguientes escenarios:

  • Creas un índice en una vista que es incompatible con MongoDB Search.

  • Edita una vista de una manera que no cumple con los requisitos de compatibilidad de búsqueda de MongoDB.

  • Remover o cambiar la colección fuente de una vista.

    Por ejemplo, si se crea una vista sobre otra vista y se cambia la fuente de la vista superior a otra colección.

    Nota

    Esta limitación también se aplica si una Vista es descendiente de otras Vistas. Por ejemplo, no se puede cambiar o remover la colección de origen de la que provienen todos los descendientes.

Los índices cambian al estado STALE en los siguientes escenarios:

Advertencia

Si el pipeline de agregación definido en tu Vista es incompatible con los documentos de la colección, la replicación de búsqueda falla. Por ejemplo, si una expresión $toDouble opera sobre un campo del documento que contiene un arreglo, la replicación falla. Asegúrate de que tu Vista funcione con todos los documentos de la colección sin errores.

  • Si la definición de la vista provoca un error READY de agregación mientras un índice es, este STALE se convierte en. El índice volverá a READY después de resolver el documento o modificar la definición de la vista para que no vuelva a fallar.STALE Si es, el índice sigue siendo consultable. Si el índice se sale del registro de operaciones, se activa su reconstrucción.

  • Si la definición de la Vista provoca un fallo en el pipeline de agregación mientras el índice es BUILDING, la creación de índices queda atascada hasta que soluciones el documento. El índice volverá a READY después de que resuelvas el documento o cambies la definición de vista para que no falle más.

Puedes ver los estados de los índices en la Interfaz de Usuario de Atlas en la página de Detalles del estado del índice.

Este error aparece cuando se hace una query a una vista usando una versión de MongoDB anterior a 8.1.

  • Si usa una versión de MongoDB anterior a la 8.0, le recomendamos actualizar a la 8.1o superior para consultar la vista directamente. Puede actualizar a la 8.0 para consultar la colección de origen.

  • Si usas MongoDB 8.0, deberás query el índice de visualización en la colección de origen. Por ejemplo, ejecuta .aggregate() en la colección en lugar de en la vista.

Al crear un índice de búsqueda de MongoDB en una vista, el proceso mongot realiza las mismas tareas que al crear un índice de búsqueda de MongoDB en una colección normal. El proceso mongot:

  1. Crea índices de MongoDB Search basado en las reglas en la definición del índice para la colección.

  2. Supervisa los flujos de cambio para conocer el estado actual de los documentos e índices de las colecciones para las que definió los índices de búsqueda de MongoDB.

  3. Procesa consultas de búsqueda de MongoDB Search y devuelve los IDs de los documentos y otros metadatos de búsqueda para los documentos coincidentes a mongod, que luego realiza una búsqueda completa de documentos y devuelve los resultados al cliente.

Cuando se crea un índice de búsqueda de MongoDB en una vista, la definición de vista se aplica durante el paso 1 y 2, y los documentos transformados se indexan según la definición del índice de búsqueda y luego se almacenan en el disco.

Para obtener más información sobre las Vistas, consulte Vistas.

Para crear un índice de búsqueda vectorial MongoDB en una vista, consulte Usar vistas con búsqueda vectorial MongoDB.

Volver

Múltiples colecciones