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/