我使用neo4j与人和公司作为节点和friend_of / works_at之间的关系。 我想知道如何实现引入到使用中链接的二级连接的get。我们的想法是在您希望申请的公司获得第二学位。如果有这些二度连接,那么你想知道你的第一度连接中的哪一个可以将y * ou引入这些第二度连接。
为此,我正在尝试此查询:
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)的重复朋友,因为distinct应用于作为整体返回的所有参数。这可能就像我有朋友X和Y都在Z公司C工作。这样,我得到了X-Z-C和Y-Z-C。但是,我想在Z上应用distinct,这样我可以获得XZC或YZC,也可以是连接到Z的所有朋友的列表/集合/聚合。这可能会像[“X”,“Y”..] - &gt ; Z我应该如何修改我的查询?
答案 0 :(得分: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