我的图是有向无环图。我想查询给定父节点的子图,但随后滤除与另一个父节点有关系的子图。我创建了一个图像来说明。
例如,我想选择子图(C)-[r]->(D)
,但排除(B)-[r]->(E)
,因为它是(A)
的子项。
我编写了以下Cypher查询,其中包括对apoc.path.subpgrahAll()
的调用,它过滤掉了(B),但没有过滤掉(E)
这样的节点
MATCH (n {id: 'C'})
CALL apoc.path.subgraphAll(n, {relationshipFilter: 'CONNECTED>'})
YIELD nodes, relationships
UNWIND nodes as node
WITH node
WHERE SIZE(()-[:CONNECTED]->(node)) = 1
RETURN node
答案 0 :(得分:0)
这可能对您有用:
CALL apoc.path.subgraphAll(n, {relationshipFilter: 'CONNECTED>'}) YIELD nodes, relationships
UNWIND nodes as node
WITH node
WHERE SIZE((node)<-[:CONNECTED]-()) = 1
RETURN node
顺便说一下,在Cypher模式中,您需要在关系类型之前加冒号,这是查询的问题之一(但不是主要问题)。