【发布时间】:2018-10-06 07:57:32
【问题描述】:
我有一个图模型 -
(p:Person)-[r:LINK {startDate: timestamp, endDate: timestamp}]->(c:Company)
一个人可以同时链接到多个公司,一个公司可以有多个人同时链接到它(即公司和人之间存在多对多的关系)。
endDate 属性是可选的,只有在一个人离开公司时才会出现。
我正在尝试显示一个连接网络,并且可以使用以下密码查询成功返回一个人的所有相关节点(这将显示 2 个级别的人连接)-
MATCH (p:Person {id:<id>})-[r:LINK*0..4]-(l) RETURN *
我现在需要做的是过滤关系在时间范围内匹配的关系,例如第 1 个人于 2000 年 1 月 1 日至 2002 年 12 月 31 日期间在 A 公司工作。第 2 个人于 2001 年 1 月 1 日至 2001 年 6 月 31 日在 A 公司工作。第 3 个人于 2005 年 1 月 1 日在 A 公司工作,目前仍在 A 公司。第 1 个人的结果应包括第 2 个人,但不包括第 3 个人。
同样的逻辑需要应用于图表的所有级别(我们允许用户显示 3 级连接)并与每个级别的父节点相关联,即在显示级别 2 时,Person 2 的日期和Person 3 应该用于过滤他们各自的关系。
基本上,我们正在尝试做一些类似于 LinkedIn 连接的事情,但要根据同时在公司工作的人进行过滤。
我已尝试使用 REDUCE 函数,但无法使逻辑适用于可选的结束日期 - 有人可以建议如何根据开始日期和结束日期过滤关系吗?
【问题讨论】:
-
显示您的尝试和样本数据以供验证。
-
当您在同一公司中搜索具有重叠时间的人员时,请注意解释多层次的含义。在linkedIn 上,Person1 与Person2 相关,Person2 与Person3 相关,因此如果您查看其他公司,它可能会告诉您Person3 是2 级连接。没有示例,您要达到的目标是不清楚的