对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

MongoDB搜索兼容性和限制

本页介绍了 Atlas 上 MongoDB Search 功能的兼容性和限制。有关 MongoDB Search 与自管理部署的兼容性的详细信息,请参阅 mongot 的兼容性和要求。

对于某些功能, MongoDB Search 可能需要特定版本的MongoDB。下表列出了需要特定MongoDB版本的MongoDB搜索功能。

MongoDB搜索功能
适合该功能的 MongoDB 版本

8.0 +

$search and $searchMeta on sharded views

8.2 +

7.0 +、 8.0 +

7.0 +、 8.0 +

7.0 +、 8.0 +

7.0 +、 8.0 +

7.0 +、 8.0 +

7.0 +、 8.0 +

7.0 +、 8.0 +

7.0 +、 8.0 +

7.0 +、 8.0 +

7.0 +、 8.0 +

$search searchAftersearchBefore 选项

6.0.13+, 7.0.5+, 8.0+

MongoDB Search is not supported for time series collections. Starting in MongoDB 8.3, the $search, $searchMeta, and $vectorSearch stages fail with an error message when run on timeseries collections. Previously, these stages returned empty results.

以下限制仅应用于免费集群和 Flex 集群上的MongoDB Search:

  • 您创建的内容不能超过:

    • 免费集群上的 3 索引(无论是 search 还是 vector 类型)。

    • 针对 Flex 集群的 10 个索引。

  • 当达到集群层允许的最大索引数时,您可以扩展集群层以创建更多索引。如果扩展集群层,则会在新的集群层上重建索引,从而触发初始同步。

  • 索引定义 JSON 对象的大小不能超过 3KB。

  • 一个索引定义只能具有一个同义词映射

  • 构建包含超过 300 个字段的索引失败。

  • Lucene 的默认子句限制 1024 适用于为搜索创建的任何 BooleanQuery

  • 同义词集合不能超过 10,000 个文档。

  • MongoDB Search 不支持使用Atlas 用户界面中的客户密钥管理的加密密钥对 MongoDB Search 索引进行加密。

注意

要了解搜索游乐场的限制,请参阅搜索游乐场的限制。

要学习;了解支持的客户端,请参阅索引查询

如果您创建的 MongoDB Search 索引拥有或即将拥有超过 2.1 亿个索引对象,则必须使用 numPartitions对集群进行分片。对于此限制,索引集合字段中的每个顶级文档或嵌套 embeddedDocument 都算作一个对象

默认下, MongoDB搜索会停止复制任何给定副本集成员或分片上增长超过 2.1 十亿个索引对象的单个索引的更改。这意味着您的索引仍然可查询,但可能会得到过时的结果。

如果您的集合包含 16MB 或更大的document,MongoDB Search 无法为您的document索引,从而导致您的索引变得过时,并启动完整索引重建。您必须从集合中删除违规document(s)才能成功完成索引重建。当对大型文档的更新操作导致变更流事件超过 16MB BSON 限制时,也可能会出现此问题。为避免这种情况,建议集合中的单个 document 不要超过 8 MB。请考虑以下最佳实践:

  • 将您的文档结构化,以减少子文档或数组的大小。

  • 避免执行更新或替换大字段、子文档或数组的操作。

要了解更多信息,请参阅 Change Streams 生产建议减少大型文档的大小。

要学习;了解有关索引限制的更多信息,请参阅:

要了解字段类型的限制,请参阅:

如果您使用的是聚集文档并将notablescan参数设立为true,则您的MongoDB搜索索引可能无法完成构建。要解决此问题,您必须将 notablescan 参数设立为 false 或检查日志以了解索引状态转换。

要学习查询操作符的限制,请参阅:

要了解查询选项的兼容性和限制,请参阅: