【问题标题】:case sensitive while querying in mongodb在 mongodb 中查询时区分大小写
【发布时间】:2020-10-15 22:48:55
【问题描述】:

例如,我在 mycoll 的数据库中有这样的数据作为集合

{id=1,Name:"xxx",rank:1},
{id=2,Name:"Y",rank:2},
{id=3,Nae:"Zzz",rank:3}

在写查询时,我不知道 name 写成 Name,我只是简单地传递了这样的名字,就像我展示的那样

db. mycoll .find({Name:"xxx"})

因此,此查询返回 0 条记录。因为我给出的字段路径与数据库中的记录不匹配。帮助我编写查询忽略字段路径中区分大小写。

https://docs.mongodb.com/manual/core/index-case-insensitive/

【问题讨论】:

  • 请提及您已经尝试或研究过的所有内容,而不是直接寻求帮助。

标签: javascript database mongodb collections case-sensitive


【解决方案1】:

要在没有默认排序规则的集合上使用不区分大小写的索引,请使用排序规则创建索引并将强度参数设置为12,如下所示:

db.mycoll.find({ Name:"xxx" }).collation({ locale: 'en', strength: 1 });

关于strength的值:

对于strength: 1,排序规则仅执行基本字符的比较,忽略其他差异,例如变音符号和大小写。此级别也称为主要比较级别。

通常,主要级别用于表示基本字符之间的差异(例如,“a”


使用strength: 2,排序规则会执行直到次要差异的比较,例如变音符号。也就是说,排序规则执行基本字符(主要差异)和变音符号(次要差异)的比较。基本字符之间的差异优先于次要差异。这也称为二级比较。

在次要级别,字符中的重音被视为次要差异(例如,“as”


注意请查看 Collation document fieldsICU User Guide on comparison levels 上的官方 MongoDB 文档,了解有关您可以为强度设置的不同值的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多