Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs 菜单
Docs 主页
/ /

将视图与MongoDB Vector Search 结合使用

您可以在 视图上创建MongoDB Vector Search索引来转换文档和集合,以便对集合进行部分索引、支持不兼容的数据类型或数据模型等。

以下示例使用 sample_mflix 示例数据库。

注意

消歧

本页讨论标准视图。要了解按需物化视图,请参阅按需物化视图。

要了解视图类型之间的差异,请参阅与按需物化视图的比较。

您必须使用 MongoDB 8.0 或更高版本。

要编辑视图,您必须拥有用户管理员角色,并使用 collMod 数据库命令。

  • MongoDB Vector Search 支持具有以下阶段的视图:

  • 索引名称在源集合及其所有视图中必须是唯一的。

  • MongoDB Vector Search 不支持使用会生成动态结果的操作符的视图定义,例如 $$USER_ROLES 系统变量 和$rand 聚合操作符。

  • MongoDB Vector Search 查询会返回源集合中出现的原始文档。

要创建视图,您必须拥有 createCollection 权限。

您可以使用过滤器筛选文档以对集合进行部分索引。以下示例在 sample_mflix.embedded_movies 集合上创建一个视图,以便仅对具有向量嵌入字段的文档进行索引。

高度复杂的视图转换会增加索引和查询时间。这是因为mongod 在索引期间(初始同步和稳态复制)筛选和转换oplog条目时,以及在查询时将这些转换应用于返回的文档时,必须读取视图定义。

请考虑创建物化视图以避免Atlas上的额外的复制负载。您还可以直接查询源集合,以避免视图转换造成的查询延迟。

在以下场景中,索引会更改为 FAILED 状态:

  • 您在与MongoDB Vector Search 不兼容的视图上创建的索引。

  • 您编辑视图的方式不符合MongoDB Vector Search 兼容性要求。

  • 您删除或更改视图的源集合。

    例如,如果一个视图是在另一个视图上创建的,并且将父视图源更改为另一个集合。

    注意

    如果一个视图是其他视图的后代,这一限制也同样适用。例如,您无法更改或移除所有后代所源自的源集合。

在以下场景中,索引会更改为 STALE 状态:

警告

如果在视图中定义的聚合管道与集合中的文档不兼容,搜索复制将失败。例如,如果 $toDouble 表达式对包含数组的文档字段进行操作,复制将失败。确保您的视图在处理集合中的所有文档时不会出错。

  • 如果视图定义导致聚合失败,而索引为 READY,则索引变为 STALE。解析文档或更改视图定义以使其不再失败后,索引将返回到 READY。当为 STALE 时,索引仍然可查询。如果索引脱离oplog,则会触发索引重建。

  • 如果视图定义在索引为 BUILDING 时导致聚合管道失败,则在修复文档之前,则索引生成将停滞。在您解析文档或更改视图定义后,索引将返回到 READY,以确保不再失败。

您可以在Atlas用户界面的索引状态详细信息页面查看索引状态。

当您使用 8.1 之前的MongoDB版本查询视图时,会出现此错误。

  • 如果您使用 8.0 之前的MongoDB版本,我们建议您升级到 8.1+ 以直接查询视图。您可以升级到 8.0 来查询源集合。

  • 如果使用MongoDB 8.0,则必须针对源集合查询视图索引。示例,对集合而不是视图运行.aggregate()

当您在视图上创建MongoDB Vector Search索引时,mongot进程执行的任务与您在常规集合上创建MongoDB Vector Search索引时相同。mongot进程:

  1. 根据集合索引定义中的规则创建MongoDB Vector Search 索引。

  2. 监控变更流以了解您为其定义了MongoDB Vector Search 索引的集合的文档和索引的当前状态。

  3. 处理MongoDB Vector Search 查询,并将匹配文档的文档ID 和其他搜索元数据返回给 mongod,后者执行完整文档查找并将结果返回给客户端。

当您在视图上创建MongoDB向量搜索索引时,会在步骤 1 和 2 期间应用视图定义,并且转换后的文档会根据搜索索引定义进行索引,然后存储在磁盘上。

要了解有关视图的更多信息,请参阅视图。

要在视图上创建MongoDB搜索索引,请参阅将视图与MongoDB搜索结合使用。

后退

解释查询结果

获得技能徽章

免费掌握“向量搜索基础知识”!

了解详情

在此页面上