RegEx匹配Neo4j数字属性

时间:2012-09-11 17:18:58

标签: regex neo4j cypher

我有几个节点共享一个带有数值的属性。我想使用reular表达式过滤此属性。这可以使用Cypher查询语言吗?

示例:

A { num: 3 }
B { num: 12 }
C { num: 532 }
D { num: 1423 }

如何获取num属性包含数字3的所有节点(应返回A,C和D)。我尝试过类似n.num =~ '3'的内容,但会导致错误(“java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String)”)

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这样,您尝试将RegExp应用于Long类型的属性,该属性无效。将节点属性定义为字符串将起作用,请参阅http://tinyurl.com/bqoq62q

否则,支持自动排序,所以你可以(在未来的Cypher版本中)where (node.num+'') =~ '3'即使使用Long也能做到这一点。但不是现在。

答案 1 :(得分:0)

我对cypher的东西并不是很清楚(看起来根本不像正则表达式),但你想要的正则表达式是这样的(假设你不能有嵌套的花括号;如果可以的话,正则表达式是不可能的。)

([A-Z]\s*\{[^\}]*num:\s*3\D[^\}]*\})

这将匹配单个大写字母,后跟开放的大括号,并且在任何结束大括号之前具有num:3。由于括号,整个事情都会被记住。