使用正则表达式运算符=〜时,ArangoDB与不区分大小写的文档不匹配

时间:2017-08-09 18:56:35

标签: arangodb case-insensitive aql

我使用的是企业3.2,并且正面匹配运算符 =〜存在问题。从文档中,似乎我可以使用字符串正则表达式,这应该不区分大小写。但是,当尝试时,右手操作数全部为小写时,它无法匹配字符。附加屏幕截图以引用该问题。第一个屏幕截图显示,当我们使用与集合中相同的大小写时,查询将恢复文档。 enter image description here

这是第二个屏幕截图,显示不区分大小写的正则表达式无法提取记录。 enter image description here

3 个答案:

答案 0 :(得分:1)

像汤姆已经说过的那样。您必须使用REGEX_TEST(text, search, caseInsensitive)caseInsensitive设置为true(请参阅docs)。

运营商=~只是REGEX_TEST(text, search, false)的简写。

答案 1 :(得分:0)

确实你必须使用REGEX_TEST。这就是你如何做到的,例如。

FOR doc IN contacts 
    FILTER REGEX_TEST(doc.name, 'anystring_representing_regex', true)
RETURN doc

答案 2 :(得分:0)

当我遇到这个问题时,我偶然发现了这个问题,但是还有另一个解决方法。只是想把它交给想要使用=〜运算符而不是REGEX_TEST()函数的人。

示例:

FOR doc in contacts
FILTER doc.name =~ '(?i)raM'
RETURN doc

另一种解决方案也可以(未经测试):

FOR doc in contacts
FILTER LOWER(doc.name) == LOWER('raM')