簡體   English   中英

Neo4j Cypher 獲取鏈表中的所有節點

[英]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屬性應包含回合中的所有回合。
  • 這個查詢假設startscontinues關系類型總是有Round結束節點,所以為了效率我們不費心在MATCH模式中指定這些節點標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM