2017-07-28 55 views
2

我有一個挑戰節點,它可以在它下面發佈評論。每個評論節點可以依次發佈評論,直到任何級別。如何在單個查詢中刪除層次結構下的節點

從外觀上看,有點像下面的圖片:

enter image description here

當一個挑戰節點被刪除,我需要能夠先刪除附加到這個挑戰節點註釋節點的整個層次。

我已經嘗試了一些查詢,但無法弄清楚如何使用單個查詢來實現此效果。一個查詢我想它會刪除所有節點處第2級爲:

MATCH (c:Challenge {id: 'rJkSss-4W'})<-[:POSTED_IN]-(comment:Comment) 
WITH c, comment 
OPTIONAL MATCH (comment)<-[:POSTED_IN]-(childComment) 
DETACH DELETE childComment; 

有沒有寫一個查詢的方式,可以刪除該挑戰節點下發布的所有評論節點(包括1級,2 ,...)?在上面的示例中,我希望在一個查詢中刪除所有13個註釋節點。

+0

會這麼簡單得多,速度更快,如果挑戰ID是,即使它們有充分的評論父母的評論。 –

回答

3

試試這個

MATCH (c:Challenge {id: 'rJkSss-4W'})<-[:POSTED_IN*]-(comment:Comment) 
detach delete comment 

我就發表過評論,但我沒有足夠的聲譽

+2

如果你錯過了它 - *是可變長度路徑,所以它將遍歷所有級別的評論。因此,如果你有不同的用例,你可能想給它一個上限(以免你的查詢變得瘋狂)'(c:Challenge {id:'rJkSss-4W'})< - [:POSTED_IN * 1..4 ] - (評論:評論)' –