2014-09-19 88 views
2

我想查詢的圖形與一組指定的關係返回所有的路徑與一組特定關係的所有路徑。查詢在Neo4j的

圖表我有包含以下節點:人

其連接兩個人的關係是:人都知道,結婚

因此,一些數據的一個例子是:

c:Person-[:knows]->b:Person 
    a:Person-[:married]->c:Person 
    d:Person-[knows]-> a:Person 

在我查詢我希望能夠找到包含'知道'和'已婚'兩種關係的所有路徑;然而,我不關心路徑中這種關係的順序。例如,我的查詢應該返回以下路徑:

1)a:人 - [:已婚] - > c:人 - [:知道] - > b:人
2)d:人 - [:知道] - >一個:人 - [:結婚] - > C:人

我嘗試以下查詢

MATCH p=(a)-[:KNOWS|MARRIED*1..3]-(b) 
    RETURN p 

然而,返回的路徑僅具有知道關係或路徑僅具有已婚關係,但不是兩者。

有沒有找到我想要的路徑的方法嗎?非常感謝!

回答

0

你可以試試這個

MATCH p=(a)-[rel*]-(b) 
WHERE type(rel)='KNOWS' OR type(rel)='MARRIED' 
RETURN p 

它會爲您提供所有的路徑

+0

非常感謝你的回答。我試着查詢,並拋出一個錯誤:r沒有定義(第2行,第7列)。 – sgao 2014-09-21 21:08:27

+0

@sgao編輯的查詢。 – 2014-09-22 05:00:55

+0

再次感謝您的更新答案。我試過了,它仍然拋出了相同的錯誤:rel沒有定義。然而,我發現下面的查詢可以工作: 匹配(一) - [R *] - (B) 其中 濾波器(X IN r其中式(X)= '知道') AND 濾波器(Y IN r類型(y)='MARRIED') return r – sgao 2014-09-22 14:59:22

0
MATCH p = (a:Person)-[rels:KNOWS|MARRIED*]->(b:Person) 
WITH p, EXTRACT(r IN rels | TYPE(r)) AS types 
WHERE 'KNOWS' IN types AND 'MARRIED' IN types 
RETURN p 
+0

謝謝Nicole。我試過查詢,沒有行被返回。 – sgao 2014-09-24 00:35:59

+0

那麼猜測那個模式不存在。 :P – 2014-09-24 21:48:20