【发布时间】:2015-09-26 10:38:12
【问题描述】:
在我的 Neo4j 应用程序中,我有一个复合 Decision 节点。每个Decision 可以有无限数量和深度的后代Decision 节点。
我有一个 Cypher 查询,它返回某个父决策 id 的后代决策 id:
MATCH (d:Decision)-[:CONTAINS*]->(descendantDecision)
WHERE id(d) = {decisionId}
RETURN id(descendantDecision) as id
我需要修改这个函数以便只返回非共享的后代决策节点 id。
例如,我有以下层次结构:
父 D3 {decisionId} 的新 Cypher 查询必须返回以下后代决策 ID:D4、D6、D7、D8
请注意,必须返回 ID 为 D7(与 D4 和 D8 共享)的共享节点,因为此节点仅在 D3 内部层次结构内共享,但 ID 为 D5 的共享节点不得被返回,因为它与某个其他节点 (D9) 从外部层次结构共享到 D3。
因此,必须返回以下节点(标有绿色符号 - D4、D6、D7、D8):
请帮我创建这个新的 Cypher 查询。
【问题讨论】: