2014-07-10 33 views
0

我有兩個結構不同的標籤:爲什麼我的密碼查詢返回null?

樹節點的標籤:人

圖表nodes'label:朋友

1)樹:

a-->b-->d 
| | 
| -->e 
| 
-->c-->f 
    | 
    -->g 
    | 
    -->h 

2)圖:

b-->a-->f-->g-->b 
    | 
    -->b 

我有這個密碼查詢和我ex pect return是:「b」

但它返回null。我該如何寫這個查詢?

MATCH (a),(b) 
WHERE a.name='ali' 
AND (a:Friend)-[:FRIEND_OF]-(b:Friend) 
AND (a:Person)-[:PARENT_OF]->(b:Person) 
RETURN b.name 

回答

0

如果你能解釋你想要做什麼,這將有很大的幫助。我不太明白。

由於人與人之間的關係已經有標籤(FRIEND_OFPARENT_OF),爲什麼要使用Friend節點標籤?除非你有一個很好的理由,否則我只會有一個帶有Person標籤的節點。

您發佈的查詢將返回與阿里和阿里是他/她的父母的朋友的人員節點。它可以被改寫爲:

MATCH (a:Person {name:"ali"})-[:FRIEND_OF]-(b:Person) 
WHERE (a)-[:PARENT_OF]->(b) 
RETURN b.name 

我沒有這樣做很難測試結果的數據集。你說的是你沒有得到任何結果。

可以驗證:

  • 沒有與阿里的名字只有一個節點,它有2個關係中,你正在尋找?如果有2個名爲ali的節點,並且它們中的每一個都具有上述關係之一,Neo4j將找不到任何匹配。你正在尋找一個有兩個關係的節點。

  • 節點b存在並且具有名稱屬性?

+0

你好。我有這兩個不同標籤的結構。 http://www.4shared.com/photo/BZaGC0K9ce/Screenshot_from_2014-07-12_09_.html 和 http://www.4shared.com/photo/EAUP1p3Zce/Screenshot_from_2014-07-12_09_.html 我想要讓「Person」中的節點是'hassan'節點的子節點,並且在「Friend」中,'hassan'是他們的朋友 – user3807246

+0

您可以試着提供更多詳細信息嗎?你在找一個哈桑的孩子,同時又是他的朋友嗎?我真的沒有看到它和我上面發佈的查詢之間的區別,除了名稱是Ali,而不是Hassan。 – albertoperdomo