gpt4 book ai didi

MongoDB 不区分大小写的索引不工作

转载 作者:行者123 更新时间:2023-12-05 05:05:38 25 4
gpt4 key购买 nike

我有一组用户,其中一个文档字段名为 leaderboard_name。这是一个文本字段,我希望能够以不区分大小写的方式查询它。

所以我在 Mongo docs 之后创建了一个带有自定义排序规则的新索引.我使用罗盘 GUI 创建了它,并设置了 locale = en,strength = 1 并保留其他所有默认值:

enter image description here

我有以下文档要查询:

{
leaderboard_name: "johndoe"
}

我希望通过该索引能够查询 JOHNDOE 并找到该文档,但我一直没有得到任何结果。只有当我使用匹配的大小写进行搜索时,我才能找到匹配项。

即使是解释计划也说查询中没有使用索引:

enter image description here

这是 MongoDB 4.0.16,我的理解是从 3.4 开始就支持不区分大小写的排序规则。我看过this answer ,除了使用指南针而不是 mongo shell 创建索引外,我认为我已经完成了所有其他操作。

最佳答案

如果其他人无意中发现了这一点,解决方案是确保查询包含排序规则详细信息。在我的例子中,这意味着将我的 Java 查询更改为:

private final static Collation IGNORE_CASE =
Collation.builder()
.locale("en")
.collationStrength(CollationStrength.PRIMARY)
.build();

Document user =
userCollection
.find(new Document("leaderboard_name", "johndoe"))
.collation(IGNORE_CASE)
.first();

关于MongoDB 不区分大小写的索引不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60426523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com