我在Neo4j圖中實現了一個類似鏈接列表結構的東西。Cypher遍歷
CREATE (R1:root{edgeId:2})-[:HEAD]->
(:node{text: 'edge 2 head text', width:300})-[:NEXT{edge:2, hard:true}]->
(:node{text: 'edge 2 point 0'})-[:NEXT{edge:2}]->
(n0:node{text: 'edge 2 point 1'}),
(n0)-[:BRANCH]->(:root{edgeId:3}),
(n0)-[:NEXT{edge:2}]->
(:node{text: 'edge 2 point 2'})-[:NEXT{edge:2}]->
(:node{text: 'edge 2 point 3'})<-[:TAIL{edge:2}]->(R1)
遍歷的邊緣裝置開始與根節點,在其出射HEAD
關係到第一節點,和以下的NEXT
關係鏈,直到到達一個節點:該圖是通過執行類似於此多語句創建與來自我們從根開始的傳入TAIL
關係。
即:
MATCH path = (root:root:main)-[:HEAD]->(a:point)-[n:NEXT*]->(z:point)<-[:TAIL]-(root)
RETURN nodes(path), n
每個節點都有一個輸出NEXT
關係,但是有些節點也有BRANCH
關係,這點至其它邊的根源節點。
在上面的查詢中,nodes(path)
顯然返回沿着邊緣的所有節點,並且n
列出了沿着它的每個節點的出局NEXT
關係。我怎樣才能修改這個查詢,以便除了傳出的NEXT
關係之外,它還返回任何傳出的BRANCH
關係
如何修改上述查詢,以便返回的每個記錄包含路徑上的節點以及列表所有傳出關係(包括NEXT
和BRANCH
)嗎?
請注意,我不想遍歷此查詢中的BRANCH
邊緣,我只是想讓它告訴我它們在那裏。我想在Java中實現這個策略,但是到目前爲止,我們首選的是直接執行Cypher查詢,而不是使用Traversal API。如果我這樣做讓自己變得更加困難,請把它帶給我注意)。
你可能想看看你的問題和修復查詢,創建查詢被打破,匹配查詢使用不同的標籤;也可以排除與問題無關的屬性。如果您共享工作模型,查詢或控制檯或圖形要點,則您更有可能獲得快速準確的答案。 – jjaderberg