我在Neo4j中有一个简单的树形图。每个节点都是Object
类型,具有id
和name
属性,并且可以通过父子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
,也行不通。)
答案 0 :(得分:0)
我通过列表理解找到了一种方法
MATCH network = (:Object { id: 127 })-[*]->(x:Object)
WHERE NONE (n IN nodes(network) WHERE n.id = 131)
RETURN network
这种方法非常快,但也许存在更好的解决方案?...