Regex MongoDB计数和正则表达式搜索计数不匹配
我有一个巨大的mongoDB,其中包含我使用名称作为索引的文档 基本上,我有一个包含48000016条目的文本文件。(我使用wc-l获得该计数) 为了提供更多的上下文,数据库包含了很多我们从OCR中提取的名称(所以有很多垃圾),还有其他语言的名称(日语、俄语等) 我的MongoDB表统计数据告诉我有48000016,这很好 出现此问题的原因是,我想使用以下正则表达式查询名称上的项目(这是一个标准字符串):Regex MongoDB计数和正则表达式搜索计数不匹配,regex,mongodb,pcre,database,Regex,Mongodb,Pcre,Database,我有一个巨大的mongoDB,其中包含我使用名称作为索引的文档 基本上,我有一个包含48000016条目的文本文件。(我使用wc-l获得该计数) 为了提供更多的上下文,数据库包含了很多我们从OCR中提取的名称(所以有很多垃圾),还有其他语言的名称(日语、俄语等) 我的MongoDB表统计数据告诉我有48000016,这很好 出现此问题的原因是,我想使用以下正则表达式查询名称上的项目(这是一个标准字符串): /^([A-Z]|\W|\s|\d|_)/i 因此,我的清单: 有支票吗 不区分大小
/^([A-Z]|\W|\s|\d|_)/i
因此,我的清单:
- 有支票吗
- 不区分大小写-检查
- 任何数字-检查
- 下划线检查
- \W表示不是数字、字母或下划线的任何内容
db.name.aggregate({$group:{_id:"uniqueDocs", count:{$sum:1}}})
结果是:
{ "result" : [ ], "ok" : 1 }
非常感谢 我看到您正在使用锚点
^
匹配一行的开头。该行可能以新行\n
或回车符\r
开头
尝试将\n
和\r
包含到正则表达式中
/^([A-Z]|\W|\s|\d|\r|\n|_)/i
还要检查以拆下锚固件
/([A-Z]|\W|\s|\d|\r|\n|_)/i
最后一个选项是反转正则表达式以查看哪些记录不包括在内。这些正则表达式还应该计算空字符串
/^(?![.*])/i
我要感谢@Paul Wasilewski给了我一些很好的解决方案。我发现我的问题与正则表达式问题无关 我的5个条目没有索引,它们的长度超过1024字节,所以MongoDB无法对它们进行索引
这就是正则表达式无法查询它们的原因。如何反转正则表达式并检查结果?请使用run
db..aggregate({$group:{u id:{uniqueDocs],count:{$sum:1}}}}})
并将其添加到您的问题中尝试将\n\r
包含到您的正则表达式中,查看我的更新答案。我忘了在问题中提到,我展示的正则表达式是紧凑型的,实际上我使用的是这样的东西:A | B | C | D。。。我从python数组生成的,因为我想在多个并发进程中处理数据库。我仔细检查了一下,没有错误。他们正确地给出了与已发布正则表达式相同的结果。所以问题出在别处。我尝试了这两个命令,但仍然得到相同的结果。据我所知,我们在其他方面都应该匹配,但事实并非如此。所以我猜我有不能被正则表达式处理的空字符串或特殊字符。这可能吗?@ElCapitaine,空字符串可能是一个很好的解释。尝试反转regex^(?![.*)并查看结果。这也会找到空字符串