如何在Cypher中通过正则匹配属性名筛选满足值条件的节点?
解决Cypher中按属性名正则匹配并筛选属性值的问题
要实现筛选出包含以SomeProperty开头的属性且该属性值大于10的节点,你需要借助properties()相关函数获取节点的所有属性信息,再通过遍历和正则匹配完成筛选,具体写法如下:
MATCH (n) WHERE ANY (kv IN keys(n) WHERE kv =~ '^SomeProperty.*' AND n[kv] > 10) RETURN n;
代码说明:
keys(n):获取节点n的所有属性名列表kv =~ '^SomeProperty.*':用正则匹配属性名,^限定匹配开头,.*匹配任意后续字符,确保只选中以SomeProperty开头的属性名n[kv] > 10:通过属性名变量kv获取对应属性值,判断是否大于10ANY(...):只要节点存在至少一个满足条件的属性,就返回该节点
如果需要同时返回符合条件的属性名和属性值(而非仅节点),可以用以下查询:
MATCH (n) UNWIND keys(n) AS kv WHERE kv =~ '^SomeProperty.*' AND n[kv] > 10 RETURN n, kv AS matchingProperty, n[kv] AS propertyValue;
内容的提问来源于stack exchange,提问作者L.Rex
相关产品推荐
相关产品推荐

