Puedes crear un índice de MongoDB Vector Search en un Vista para transformar documentos y colecciones, de modo que sea posible indexar parcialmente una colección, dar soporte a tipos de datos o modelos de datos incompatibles, y más.
Los siguientes ejemplos usan la base de datos de muestra sample_mflix.
Nota
Desambiguación
Esta página discute las vistas estándar. Para aprender más sobre las vistas materializadas on-demand, consulte Vistas materializadas On-demand.
Para aprender sobre las diferencias entre los tipos de vistas, se puede consultar Comparación con vistas materializadas on-demand.
Requisitos
Debes usar MongoDB 8.0 o superior.
En MongoDB v8.0+:
Usa la Interfaz de Usuario de Atlas o la API de administración de Atlas para crear índices de MongoDB Vector Search en vistas.
Ejecutar las queries de MongoDB Vector Search contra la colección fuente. Referencia el índice de MongoDB Vector Search que se creó en la Vista. Estas consultas devuelven los documentos originales tal como aparecen en la colección de origen.
En MongoDB v8.1+, también puedes:
Usar
mongoshy los métodos Driver,db.collection.createSearchIndex(),db.collection.updateSearchIndex(),db.collection.dropSearchIndex()y$listSearchIndexespara crear y gestionar índices de MongoDB Vector Search en Views.Ejecuta las consultas de búsqueda vectorial de MongoDB en la Vista.
Para editar una Vista, debes tener el rol de Administrador de Usuario y utilizar el comando collMod comando de base de datos.
Limitaciones
MongoDB Vector Search admite vistas con las siguientes etapas:
Los nombres de los índices deben ser únicos en toda una colección de fuente y todas sus vistas.
MongoDB Vector Search no admite definiciones de vista con operadores que produzcan resultados dinámicos, como la variable del sistema $$USER_ROLES y el operador de agregación $rand.
Las consultas de MongoDB Vector Search devuelven los documentos originales tal como aparecen en la colección de origen.
Ejemplo: Filtrar documentos
Para crear una vista, debe tener el privilegio de createCollection.
Puedes filtrar documentos para indexar parcialmente una colección. El siguiente ejemplo crea una vista en la colección sample_mflix.embedded_movies para asegurar que sólo se indexen los documentos que tienen un campo de incrustación de vectores.
Consideraciones sobre el rendimiento
Las transformaciones de vistas altamente complejas pueden aumentar el tiempo de indexación y query. Esto se debe a que el mongod debe leer la definición de vista cuando filtra y transforma las entradas del oplog durante la indexación (sincronización inicial y replicación en estado estable), y cuando aplica esas transformaciones a los documentos devueltos en tiempo de query.
Considera crear una vista materializada para evitar una carga extra de replicación en Atlas. También puedes query la colección de origen directamente para evitar la latencia de queries que se produce con la transformación de la vista.
Solucionar problemas
Los índices cambian a FAILED
Los índices cambian al estado FAILED en los siguientes escenarios:
Creas un índice en una Vista que es incompatible con MongoDB Vector Search.
Editaste una vista de forma que no cumpla los requisitos de compatibilidad con MongoDB Vector Search.
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 a STALE
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 fallo de agregación mientras un índice está
READY, el índice se convierte enSTALE. El índice volverá aREADYdespués de que resuelvas el documento o cambies la definición de vista para que no falle más. CuandoSTALE, el índice sigue siendo consultable. Si el índice se cae del oplog, se activa una reconstrucción del índice.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á aREADYdespué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.
Error: $search solo es válido como la primera etapa en un pipeline
Este error aparece cuando se hace una query a una vista usando una versión de MongoDB anterior a 8.1.
Si utiliza una versión de MongoDB anterior a la 8.0, le recomendamos que actualice a la 8.1+ para query la vista directamente. Puedes actualizar a 8.0 para query 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.
Proceso de índice
Cuando se crea un índice de MongoDB Vector Search en una vista, el proceso mongot realiza las mismas tareas que cuando se crea un índice de MongoDB Vector Search en una colección normal. El proceso mongot:
Crea índices de búsqueda vectorial MongoDB basados en las reglas de la definición de índices para la colección.
Supervisa los change streams para el estado actual de los documentos e índices de las colecciones para las cuales definiste los índices de MongoDB Vector Search.
Procesa las queries de búsqueda vectorial en MongoDB Vector Search y devuelve los identificadores de los documentos y otros metadatos de búsqueda de 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 MongoDB Vector Search en una Vista, la definición de la Vista se aplica durante los pasos 1 y 2, y los documentos transformados se indexan según la definición del índice de búsqueda, y luego se almacenan en disco.
Obtén más información
Para obtener más información sobre las Vistas, consulte Vistas.
Para crear un índice de MongoDB Search en una vista, consulte Uso de vistas con MongoDB Search.