注意
本页介绍自托管(非 Atlas)部署的文本查询功能。对于MongoDB上托管的数据, MongoDB还提供改进的全文查询解决方案 MongoDB Search 和向量搜索解决方案 Vector Search.
文本索引支持对包含字符串内容的字段进行 文本搜索查询。它们还支持启用 Queryable Encryption 的集合中加密字段的 聚合表达式 。文本索引可提高在字符串内容中搜索特定单词或字符串时的性能。
一个集合只能有一个文本索引,但该索引可以包含多个字段。
要创建文本索引,请使用以下原型:
db.<collection>.createIndex( { <field1>: "text", <field2>: "text", ... } )
$text 查询支持
文本索引支持本地部署上的 $text 查询操作。要使用 $text,您必须创建文本索引。
$encStr 支持
文本索引支持启用了前缀、后缀或子字符串查询的Queryable Encryption集合中字段的聚合表达式。需要文本索引才能使用 $encStrNormalizedEq 表达式。
用例
在线商店的 clothing集合有一个 description字段,其中包含一串描述每件商品的文本字符串。要查找由 "silk" 制成的衣服,请在 description 上创建文本索引并为 "silk"运行$text查询。搜索将返回在 description 中提及 "silk" 的所有文档。
开始体验
要学习;了解如何创建和使用文本索引,请参阅:
详情
本节介绍文本索引的详细信息。
复合文本索引
在具有文本索引键和其他键类型的复合索引中,只有文本索引字段决定索引是否引用文档。其他键不影响文档引用。
覆盖查询
sparse 属性
文本索引始终是稀疏的。创建文本索引时, MongoDB会忽略sparse 选项。
MongoDB不会为缺少 文本索引字段、具有 null 值或具有空数组的文档添加文本索引项。
存储要求和性能成本
文本索引具有以下存储和性能特征:
文本索引会占用大量RAM 。它们为每个文档的每个索引字段中的每个唯一词干包含一个索引项。
文本索引影响写入性能,因为MongoDB必须为新文档的每个索引字段中的每个唯一的词干词添加一个索引项。
文本索引存储单个单词,而不是多单词字符串或单词邻近信息。当整个集合都容纳在RAM中时,包含多个单词的查询运行更快。
了解详情
要学习;了解有关文本索引的更多信息,请参阅:
有关文本搜索示例,请参见
$text reference page。有关聚合管道中的示例
$text操作,请参阅自托管部署上的聚合管道中的 $text。