2013-01-03 90 views
0

我正在使用neo4j與人員和公司作爲節點和這些之間的friend_of/works_at關係。 我想知道如何實現一個get引入第二個連接的鏈接使用。這個想法是讓你想要申請的公司獲得你的二級學位。如果存在這些第二級連接,那麼您想知道第一級連接中的哪些人可以將這些第二級連接引入。獲取介紹[linkedin]像

對於這個我想這個查詢:

START from = node:Nodes(startNode), company = node:Nodes(endNode) 
MATCH from-[:FRIEND_OF]->f-[:FRIEND_OF]-fof-[:WORKS_AT]->company 
WHERE not(fof = from) and not (from-[:FRIEND_OF]->fof) 
RETURN distinct f.name, fof.name, company.name 

但是,這個返回的朋友的名字(fof.name)的重複的朋友,因爲不同的是對返回作爲一個整體的所有參數應用。這可能就像我有朋友X和Y,他們都連接到在C公司工作的Z.這樣,我就可以同時獲得X-Z-C和Y-Z-C。但是,我想在Z上應用不同的分支,這樣我就可以獲得XZC或YZC,或者可以獲得連接到Z的所有朋友的列表/集合/集合。這可以像[「X」,「Y」..] - > Z我應該如何修改我的查詢?

+0

請創建樣本數據庫讓我們一起玩,在console.neo4j.org –

+0

,你想要什麼返回時,你將不得不像'XZC和XYC' – ulkas

+0

@ulkas情況 [「X」] - > [「Y」] [「X」] - > [「Z」] 暗示X可以將我與Y和Z分開連接。 – n0nChun

回答

2

http://console.neo4j.org/?id=s1m14g

start joe=node:node_auto_index(name = "Joe") 
match joe-[:knows]->friend-[:knows]->friend_of_friend 
where not(joe-[:knows]-friend_of_friend) 
return collect(friend.name), friend_of_friend.name