Regex 使用正则表达式进行不区分大小写的搜索

Regex 使用正则表达式进行不区分大小写的搜索,regex,mongodb,case-insensitive,Regex,Mongodb,Case Insensitive,我正在尝试用regex实现一个不区分大小写的搜索。 示例:/^sanford/i(搜索任何以“sanford”开头的内容,忽略大小写敏感度 对于不区分大小写的查询,文档建议使用自定义排序规则创建索引。只要不涉及正则表达式,就可以正常工作 问题是:使用正则表达式进行搜索(在本例中为“开始”),不区分大小写的搜索不考虑索引 文档中多次说明了这一点,也可以使用explain命令进行复制 总而言之:它是有效的,但没有有效地使用索引。我很高兴得到任何提示,我无法摆脱我在这里遗漏了一些基本上重要的东西的感觉

我正在尝试用regex实现一个不区分大小写的搜索。 示例:/^sanford/i(搜索任何以“sanford”开头的内容,忽略大小写敏感度

对于不区分大小写的查询,文档建议使用自定义排序规则创建索引。只要不涉及正则表达式,就可以正常工作

问题是:使用正则表达式进行搜索(在本例中为“开始”),不区分大小写的搜索不考虑索引

文档中多次说明了这一点,也可以使用explain命令进行复制

总而言之:它是有效的,但没有有效地使用索引。我很高兴得到任何提示,我无法摆脱我在这里遗漏了一些基本上重要的东西的感觉

插入带有toLowerCase的字符串,然后仅使用小写字符串进行搜索不是一个选项。 我不能使用文本索引,因为每个集合只能有一个

文档中的示例请参见此处,底部的绿色信息框。 @D.SM:使用索引,但它扫描所有文档。

示例文件:

{
  "name": [{
        "family": "Test",
        "given": "Name",
    }],
}
带排序规则的索引:

{ "name" : "name_family", "key" : { "name.family" : 1 }, "host" : "noneofyourbusiness.com", "accesses" : { "ops" : NumberLong(114), "since" : ISODate("2020-07-30T20:25:59.079Z") }, "shard" : "shA", "spec" : { "v" : 2, "key" : { "name.family" : 1 }, "name" : "name_family", "ns" : "noneofyourbusiness.somethingwithaname", "collation" : { "locale" : "de", "caseLevel" : false, "caseFirst" : "off", "strength" : 1, "numericOrdering" : false, "alternate" : "non-ignorable", "maxVariable" : "punct", "normalization" : false, "backwards" : false, "version" : "57.1" } } }
}

您能给出数据示例以及如何创建索引吗?我尝试了一些测试数据,它似乎选择了索引。所以文档告诉您MongoDB在执行不区分大小写的regexp搜索时不会使用索引,您的问题是什么?您可能应该使用文本搜索而不是正则表达式。您能给出数据示例以及如何使用索引吗您创建了索引吗?我尝试了一些测试数据,它似乎选择了索引。所以文档告诉您,MongoDB在执行不区分大小写的正则表达式搜索时不会使用索引,您的问题是什么?您可能应该使用文本搜索而不是正则表达式。