gpt4 book ai didi

Java - MongoDB 不区分大小写,不检查完全匹配

转载 作者:行者123 更新时间:2023-11-30 03:24:08 24 4
gpt4 key购买 nike

我正在尝试进行不区分大小写的查询,但通过这样做,可以通过输入用户名的部分内容来查找用户。即用户名输入“f”,并且有一个用户名为“foo”的用户,它将返回 foo 的文档。

我用它来检查不区分大小写的匹配

private DBObject getQuery(String where, String whereValue)
{
return new BasicDBObject(where, Pattern.compile(whereValue, Pattern.CASE_INSENSITIVE));
}

如何检查完全匹配但忽略大小写?

最佳答案

这实际上与您正在使用的正则表达式模式有关。对于字符串中任何位置的“foo”和“foo”,请使用以下内容:

/\bfoo\b/i

或者特别是在字符串的“开始”处:

/^foo\b/i

如果没有具体信息,您将不会获得“特定”匹配。

MongoDB 使用 pcre 库(或至少兼容),因此请使用与该约束匹配的表达式。

当然,正如您所要求的,这确实包括不区分大小写的“i”选项。因此,这将匹配“foo”和“FOO”的“单词”以及其他可能的大小写变化。

另请注意,当使用基于 MongoDB 正则表达式的查询时,除非字符串使用插入符号“^”“锚定”到字符串的开头,否则搜索将在集合中的所有文档上完成,而不仅仅是那些在某处以某种形式包含“foo”的内容。

只有脱字号“^”可以使用索引,但“不区分大小写”选项也打破了这一点。

为了高效搜索,请在文档中包含“规范化”大小写的字符串,并希望仅从字符串的开头进行查找。

关于Java - MongoDB 不区分大小写,不检查完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30682173/

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