2017-04-13 53 views
1

嗨,我最近開始使用Neo,想知道如何查詢圖形以返回顯示連接的兩列ID。從Neo4j密碼查詢返回邊緣列表

MATCH path=(s1:Student{StudentId: 7079945})-[r:FRIENDS*6..9]->(s2:Student) 
WHERE s1.StartDate> '2015-01-01' 
RETURN s1.StudentID, s2.StudentId 

上面給出了s1的所有連接,但它沒有顯示任何其他連接。我怎樣才能將此圖中的所有連接收集到一個邊界列表中?計劃是在RNeo4j中使用此查詢並使用igraph進行分析。

在此先感謝

回答

1

如果你真的只是對每個路徑中的節點對感興趣,那麼你可以做如下的事情。

該查詢採用匹配的路徑,將每個路徑中的節點對分組,然後僅返回不同的對。

MATCH path=(s1:Student{StudentId: 7079945})-[r:FRIENDS*6..9]->(s2:Student) 
WHERE s1.StartDate> '2015-01-01' 
WITH REDUCE(pairs =[],r in relationships(path) | pairs + [[startNode(r).StudentId,endNode(r).StudentId]]) as pairs 
UNWIND pairs as pair 
WITH DISTINCT pair 
RETURN pair[0] as from, pair[1] as to 
+0

感謝您的迴應,我認爲這是正確的軌道,但它只是返回圖形。但是,我只想返回兩列相應的ID – Stig

+0

np - 我更新它只是返回離散列中的學生ID。 Aside ...你的手柄是Top Gear點頭嗎?如果是這樣......很好地完成。 –

+0

btw ...如果你在瀏覽器中看到一個圖形,並且想要查看實際行,你總是可以點擊每個查詢窗格左側的「行」圖標。您可以用上面的「圖形」圖標切換回來。 –

0

做到這一點,最簡單的方法是返回路徑

MATCH path=(s1:Student{StudentId: 7079945})-[r:FRIENDS*6..9]->(s2:Student) 
WHERE s1.StartDate> '2015-01-01' 
RETURN path 

正如你可能不感興趣的返回:朋友關係,因爲他們都是一樣的,你可以返回路徑中只有節點

MATCH path=(s1:Student{StudentId: 7079945})-[r:FRIENDS*6..9]->(s2:Student) 
WHERE s1.StartDate> '2015-01-01' 
RETURN nodes(path) 

您可以在documentation中找到更多路徑功能。

+0

我仍然得到相同的圖形,我只是試圖讓studentIDs顯示連接的兩列,這樣我可以在'使用它們visNetwork(節點,EdgeList都)'R中改變山坳名後'從'和'到'。基本上是這張圖的邊界列表。我正在關注https://neo4j.com/blog/visualize-graph-with-rneo4j/ – Stig