0

我使用 Neo4j 与人和公司作为节点和这些之间的friend_of/works_at 关系。我想知道如何实现一个被引入到使用中链接的二级连接。我们的想法是在您希望申请的公司获得第二学位。如果有这些二度连接,那么您想知道您的一度连接中谁可以将您介绍给这些二度连接。

为此,我正在尝试此查询:

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,他们都与在 C 公司工作的 Z 有联系。这样,我得到了 XZC 和 YZC。但是,我想在 Z 上应用 distinct,这样我得到 XZC 或 YZC 或者可能是连接到 Z 的所有朋友的列表/集合/聚合。这可能像 ["X","Y"..]-> Z 我应该如何修改我的查询?

4

1 回答 1

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
于 2013-01-04T12:25:45.993 回答