2015-11-03 42 views
1

舉例來說,我使用的是this site。假設我們想知道Morpheus知道誰,但我們想保留關係的方向。我想a是「從」和b是「到」獲取節點的鄰居但尊重關係的方向

這將返回所有這三個關係,但方向已丟失:

MATCH (a { name:"Morpheus" })-[]-(b:Crew) RETURN a, b 

此外,睡眠總是a ... DOH 。

取2是讓睡眠是ab

MATCH (a:Crew)-[]-(b:Crew) WHERE a.name="Morpheus" OR b.name="Morpheus" 
RETURN a, b 

這將返回我想象的兩倍多行。顯然[]關係非常隨意。

一些洞穴探險之後,我意識到我是專注於錯誤的東西:

MATCH ({ name:"Morpheus" })-[r:KNOWS]-() 
RETURN startnode(r) AS a, endnode(r) AS b 

該做的伎倆。 3行與尊重方向的關係。

對於在該查詢中根本不命名節點,我感到有點不可思議。這感覺就像我是黑客。但是,再次,將節點綁在一起是什麼關係。有什麼其他方法可以做同樣的事情?

回答

2

你應該能夠在兩種方法相結合:

MATCH (knower:Crew)-[:KNOWS]->(knowee:Crew) 
WHERE knower.name="Morpheus" OR knowee.name="Morpheus" 
RETURN knower, knowee 
+0

啊,我明白了。由於不包括查詢中的方向,我使它變得更加困難。 –

+1

我想我的腦子裏已經有了Morpheus必須在左邊,就像聽起來那樣瘋狂。我想我即將升上一個關卡,這就是我遇到問題的原因。 –

+1

確實;)它確實需要一些頭部包裝來看看Neo4j將如何匹配比賽的所有潛在排列。 –

相關問題