Neo4j Cypher按关系获取根节点筛选器
我正在尝试创建一个cypher语句,用于从分层图结构中的给定节点Neo4j Cypher按关系获取根节点筛选器,neo4j,Neo4j,我正在尝试创建一个cypher语句,用于从分层图结构中的给定节点n中查找根节点a,其中一些节点被“停用”,这意味着节点本身和所有连接的关系都有一个属性停用,并以日期作为值 在遍历停用的节点时,我能够找到根节点: MATCH (a)-[rs:child*]->(n) WHERE NOT ()-[:child]->(a) AND id(n) = $n_id RETURN DISTINCT a 我想我必须以某种方式解除关系rs,然后过滤存在(r.deprecated) 另一个解决方案类似
n
中查找根节点a
,其中一些节点被“停用”,这意味着节点本身和所有连接的关系都有一个属性停用
,并以日期作为值
在遍历停用的节点时,我能够找到根节点:
MATCH (a)-[rs:child*]->(n)
WHERE NOT ()-[:child]->(a) AND id(n) = $n_id
RETURN DISTINCT a
我想我必须以某种方式解除关系rs
,然后过滤存在(r.deprecated)
另一个解决方案类似于(v3.4)中“7.1.4.深度关系-与可变长度路径上的属性匹配”下的内容:
我希望找到一种解决方案,它不必为所有未停用的关系显式定义属性停用:false
,而是忽略具有非零停用的
属性的关系
这些解决方案中有任何一个是可能的吗?我想我找到了一个可能的解决方案,方法是存储路径并删除关系中属性
已停用的路径:
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
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