gpt4 book ai didi

mongodb - 如何仅对单个字段进行 MongoDB 不区分大小写的搜索?

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

所以,案例很简单。我想对字段 name 进行不区分大小写的搜索。幸运的是,最新的 Mongo 为我们带来了整理和整理索引的概念。

这很容易与类似的东西一起工作:

db.users.find({ name: 'John' }).collation({ locale: 'en', strength: 2 })

而且我为那些具有给定排序强度的字段提供了支持索引 - 非常有效。

但是,如果我想将搜索限制在更严格的范围内,例如有一些 companyId 常量,事情变得有点困惑:

db.users.find({ companyId: 'some-company-id', name: 'John' }).collation({ locale: 'en', strength: 2 })

该排序规则适用于名称和 some-company-id。因此它也会查找 SOME-COMPANY-IDSoMe-CoMpAnY-iD,这可能会导致意外的冲突,并且由于所有情况都匹配,因此任何支持索引companyId 没有帮助。

我的问题是:如何在只有 1 个字符串字段不区分大小写的情况下进行有效搜索

可能的答案可能类似于正则表达式搜索:

db.users.find({ companyId: 'some-company-id', name: /^John$/i })

...但不幸的是,任何索引都不支持此搜索。

最佳答案

到目前为止,经过长时间的讨论、谷歌搜索、尝试联系 mongoDB 团队,我们认为没有比支持索引搜索的单独字段更可靠和透明的了,比如 name_lowercase

  1. 它非常透明。
  2. 您可以按照自己的方式管理不变量。
  3. 但您必须在您的代码库中支持它。
  4. 双倍的数据和索引需要更多的磁盘空间和网络带宽。

但如果您确实需要针对某一特定情况执行此操作,请按此方式执行。

关于mongodb - 如何仅对单个字段进行 MongoDB 不区分大小写的搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037357/

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