我正在尝试创建一个密码语句,以从分层图结构中的给定节点a
查找根节点n
,其中某些节点被“停用”,这意味着该节点本身和所有连接关系具有属性deactivated
,其日期为值。
当我还遍历已停用的节点时,我能够找到根节点:
MATCH (a)-[rs:child*]->(n)
WHERE NOT ()-[:child]->(a) AND id(n) = $n_id
RETURN DISTINCT a
我想我必须以某种方式消除关系rs
并根据exists(r.deprecated)
进行过滤。
另一个解决方案与{7.1.4。深度关系-与可变长度路径上的属性匹配”下的neo4j developer manual(v3.4)中的解决方案类似。 :
MATCH p =(charlie:Person)-[* { blocked:false }]-(martin:Person)
我希望找到一种解决方案,而不是必须为所有未停用的关系显式定义属性deactivated:false
,而忽略具有非零deactivated
属性的关系。
这些解决方案有可能吗?
答案 0 :(得分:1)
我想我想出了一种可能的解决方案,方法是存储路径并删除关系具有属性deactivated
的路径:
MATCH p = (a)-[:child*]->(n)
WHERE NOT ()-[:child]->(a)
AND id(n) = $n_id
AND NONE (r in relationships(p) WHERE exists(r.deactivated))
RETURN DISTINCT a