我有几个节点共享一个带有数值的属性。我想使用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)
”)
有什么想法吗?
答案 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。由于括号,整个事情都会被记住。