0

当正则表达式搜索的字符串非常大时,我看到 mongo 正则表达式查询不返回结果,而是抛出错误。我有一个场景,我附加了很多名字来做一个正则表达式,因此我的正则表达式搜索字符串超过了 40000 个字符。例如:

db.getCollection('collection').find(
    {"name":{"$regex" :"name1 | name2 | name3", "$options":"-i"}}
)
4

2 回答 2

0

是的,mongoDB 正则表达式有字符限制,源自 perl 正则表达式限制。因为“MongoDB 使用支持 UTF-8 的 Perl 兼容正则表达式(即“PCRE”)版本 8.41。” MongoDB v3.2

可以看到限制是 32764 个字符:MongoDB add assert of regular expression length

我最近遇到了这个问题,解决方案是改用 $in 查询运算符。$in 没有字符限制。这适合我的问题,因为在如此长的输入情况下它是完全匹配而不是模式匹配。

于 2019-02-12T15:49:43.603 回答
0

你能解释一下你为什么这样做吗?正则表达式的想法是创建一个匹配(多个)值的表达式。

示例表达式:

name\d+

将匹配所有 x 为小数的“namex”值。

我们的想法是创建一个表达式来满足您的查询要求。

当您想匹配多个字符串值时,可以使用$and运算符

于 2016-10-20T06:04:57.063 回答