如何在Neo4j中排除子树?

时间:2017-04-14 12:29:34

标签: neo4j

我在Neo4j中有一个简单的树形图。每个节点都是Object类型,具有idname属性,并且可以通过父子AGGREGATION链接与其他一些节点链接(图形是树,没有允许循环)。

我成功运行了一个返回特定子树的简单查询(在下面的示例中以ID为127的节点为根):

MATCH network = (:Object { id: 127 })-[*]->()
RETURN network

但是我需要一个查询,它也会从上面查询返回的子树中排除一个以指定节点(比如131)为根的子树。这个查询怎么样?

(我试过了:

MATCH network = (:Object { id: 127 })-[*]->(x:Object)
WHERE x.id <> 131
RETURN network

,如果没有子节点,则只排除单个节点。

MATCH network = (:Object { id: 127 })-[*]->(x:Object)-[*]->()
WHERE x.id <> 131
RETURN network

,也行不通。)

1 个答案:

答案 0 :(得分:0)

我通过列表理解找到了一种方法

MATCH network = (:Object { id: 127 })-[*]->(x:Object)
WHERE NONE (n IN nodes(network) WHERE n.id = 131)
RETURN network

这种方法非常快,但也许存在更好的解决方案?...