3.4版的新功能。
不区分大小写的索引支持在不考虑大小写的情况下执行字符串比较的查询。
您可以db.collection.createIndex()
通过将collation
参数指定为选项来创建不区分大小写的索引
。例如:
要为区分大小写的索引指定排序规则,包括:
locale
:指定语言规则。有关可用语言环境的列表,请参见
整理语言环境。strength
:确定比较规则。值
1
或2
表示不区分大小写的排序规则。使用不区分大小写的索引不会影响查询结果,但是可以提高性能。有关索引的成本和收益的详细讨论,请参见 索引。
若要使用指定排序规则的索引,查询和排序操作必须指定与索引相同的排序规则。如果集合定义了排序规则,则所有查询和索引都将继承该排序规则,除非它们明确指定了其他排序规则。
要在没有默认排序规则的集合上使用不区分大小写的索引,请创建带有排序规则的索引,并将strength
参数设置为1
或2
(请参阅
排序规则以获取strength
参数的详细说明)。您必须在查询级别指定相同的排序规则才能使用索引级别的排序规则。
下面的示例创建一个没有默认排序规则的集合,然后type
使用不区分大小写的排序规则在字段上添加索引。
要使用索引,查询必须指定相同的排序规则。
使用默认排序规则创建集合时,除非指定其他排序规则,否则随后创建的所有索引都会继承该排序规则。所有未指定其他归类的查询也将继承默认归类。
下面的示例创建一个names
使用默认归类调用的集合,然后在该first_name
字段上创建一个索引。
插入少量名称:
默认情况下,此集合上的查询使用指定的排序规则,如果可能,还使用索引。
上面的操作使用集合的默认排序规则,并找到所有三个文档。它使用first_name
字段上的索引以获得更好的性能。
通过在查询中指定其他排序规则,仍然可以对此集合执行区分大小写的搜索:
上面的操作仅查找一个文档,因为它使用未strength
指定值的排序规则。它不使用集合的默认排序规则或索引。