我使用 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 我应该如何修改我的查询?