gpt4 book ai didi

regex - 如何在 Mongodb 上进行不区分大小写的查询?

转载 作者:IT老高 更新时间:2023-10-28 13:03:28 27 4
gpt4 key购买 nike

var thename = 'Andrew';
db.collection.find({'name':thename});

如何查询不区分大小写?即使是“andrew”,我也想找到结果;

最佳答案

Chris Fulstow 的解决方案可行 (+1),但它可能效率不高,尤其是在您的收藏非常大的情况下。无根正则表达式(那些不以 ^ 开头的正则表达式,它将正则表达式锚定到字符串的开头),以及那些使用 i 标志以区分大小写的正则表达式不会使用索引,即使它们存在。

您可能考虑的另一种选择是将数据非规范化以存储 name 字段的小写版本,例如 name_lower。然后,您可以有效地查询(特别是如果它被索引)不区分大小写的完全匹配,例如:

db.collection.find({"name_lower": thename.toLowerCase()})

或者与前缀匹配(一个 Root过的正则表达式)为:

db.collection.find( {"name_lower":
{ $regex: new RegExp("^" + thename.toLowerCase(), "i") } }
);

这两个查询都将使用 name_lower 上的索引。

关于regex - 如何在 Mongodb 上进行不区分大小写的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7101703/

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