2017-04-14 30 views
0

我在Neo4j中有一個簡單的樹形圖。每個節點的類型爲Object,具有idname屬性,並且可以通過父子鏈接AGGREGATION鏈接與其他一些節點(圖形是樹,不允許循環)。如何排除Neo4j中的子樹?

我成功運行(在下面的例子中由節點爲根與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

我通過列表解析發現一種方法

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

這工作相當快,但也許有更好的解決方案存在?...