自管理部署的文本索引限制
文本索引具有以下限制:
每个collection一个文本索引
一个集合最多可以有一个文本索引。
Atlas Search (在 MongoDB Atlas中提供)支持在单个集合上使用多个全文Atlas Search索引。 要了解更多信息,请参阅Atlas Search 文档。
文本搜索和提示
如果查询包含 $text
表达式,则不能使用 hint()
指定用于查询的索引。
文本搜索和短语
如果 $text
操作的 $search
字符串包含短语和单个词,$text
仅会匹配包含该短语的文档。
您不能搭配多个短语使用 $text
操作符。
文本索引和排序
文本索引无法提高排序操作的性能。 此限制适用于单字段索引和复合文本索引。
复合文本索引
复合索引可以包括文本索引键与升序和降序索引键的组合。 However, compound text indexes have these restrictions:
如果复合文本索引包含文本索引键之前的键,要使用
$text
,查询谓词必须包含前面键的等值匹配条件。创建复合文本索引时,所有文本索引键必须在索引规范文档中相邻列出。
有关复合文本索引的示例,请参阅以下页面:
排序规则选项
文本索引仅支持二进制比较,不支持排序规则选项。 二进制比较比较每个字符串中每个字符的 Unicode 数值,不考虑字母大小写或重音符号。
要在具有非简单排序规则的collection上创建文本索引,您必须在创建索引时显式指定{ collation: { locale: "simple"
} }
。
例如,考虑一个名为 collationTest
的集合,其排序规则为 { locale: "en" }
:
db.createCollection( "collationTest", { collation: { locale: "en" } } )
要在collationTest
collection上创建文本索引,您必须指定{ collation: { locale: "simple" } }
。以下命令在quotes
字段上创建文本索引:
db.collationTest.createIndex( { quotes: "text" }, { collation: { locale: "simple" } } )