我正在建模有一些層次關係(作爲父母關係),但另外一些非等級關係的一組節點。neo4j密碼匹配查詢匹配層次關係
比方說,這是一個家庭樹,以每個人的出生國的關係,爲簡單起見
因此,每個出生的國家是一個節點,每個人都是一個節點,我也許可以在暗號由於工作的關係:
start parent=node(123), child=node(456)
create parent-[:PARENT]->child;
和
start person=node(123), country=node(789)
create person-[:BORN_IN]->country;
我想要做的是,例如,得到鄉親們的名單沒有來自英國的任何祖先誰什麼,或者FOL有來自日本祖先的ks等。我覺得這應該是一個合理的查詢,但我對cypher很陌生,並且不知道如何構建它。
更新** 後的情況下更廣泛的測試,我發現,查詢不正確的一些工作完全。鑑於一名父母來自英格蘭的父母和一名不是來自英格蘭的祖父母的孩子,沒有任何來自英格蘭的祖先的兒童的詢問不正確地將該孩子帶回來自英格蘭的父母。它看起來像我編寫查詢的方式,我得到了與英格蘭有NULL關係的祖父母的回報。我的查詢如下:
START n=node(*), ancestor=node(123)
MATCH n-[r:PARENT*]->o-[b?:BORN_IN]->ancestor
WHERE b IS NULL
RETURN DISTINCT n;
如果所有人的祖先出生在有問題的國家,它工作正常。
謝謝,這工作完美。我的示例查詢的問題最終成爲我粗暴指責rel名稱。 – Paul 2013-03-27 01:34:33