[英]Neo4j Cypher get all nodes in a linked list
用下圖:
(拳擊手)-[:starts]->(Round)-[:continues]->(Round)-[:continues]->(Round)-[:continues]->(Round)
如何讓特定拳擊手完成所有回合?
現在,我只能從所有拳擊手那里獲得所有回合:(我錯過了第一回合,因為第一個關系是 STARTS 而不是 CONTINUES。
MATCH (boxer:Boxer {id: 5})
MATCH ()-[:continues]->(round:Round)
RETURN
boxer {
.*,
rounds: collect(distinct round {
.*
})
} as boxer
這可能對您有用:
MATCH p = (boxer:Boxer)-[:starts]->()-[:continues*0..]->(lastRound)
WHERE boxer.id = 5 AND NOT (lastRound)-[:continues]->()
RETURN boxer {
.*,
rounds: NODES(p)[1..]
} as boxer
[:continues*0..]
使用0
作為下限,以防回合只有一輪。NOT (lastRound)-[:continues]->()
測試過濾以葉節點結束的路徑,以便MATCH
僅獲取整個回合的路徑。rounds
屬性應包含回合中的所有回合。starts
和continues
關系類型總是有Round
結束節點,所以為了效率我們不費心在MATCH
模式中指定這些節點標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.