【发布时间】:2015-09-01 01:00:35
【问题描述】:
设置
我对图形数据库和 neo4j/cypher 非常陌生,我很难理解如何从我的结果中排除各种部分。下面是我的图表的图像。每个节点和每个关系都有一个 activeFrom 和 activeTo 属性,让我可以查看历史上任何给定点存在的图形。
MATCH (:Collective:Company)<-[tree *0..4]-(downline:Collective) RETURN downline
(与日期的任何关系都表明它已经或计划(未来日期)到期。没有日期或未来日期意味着它处于活动状态。)。
问题
我在这里的最终目标是查看相同的图表,减去所有过期的节点和关系。现在,我正在尝试构建让我看到的查询并且失败了:(
我不明白为什么:
-
Region5与Company1的关系仍然活跃……为什么公司没有出现? (不应该像第一张图片那样把公司带回来吗?) -
Office5和Office27的关系都已过期,为什么它们仍在结果中? - 办公室 1、2、6、9、11 是活动节点,但没有活动关系,为什么会被退回? (我的猜测是我的第二个
WHERE子句(分支过滤器)正在过滤掉关系,但不是它们关联的节点,但我不确定如何以不同的方式进行)
.
MATCH (:Collective:Company)<-[tree *0..4]-(downline:Collective)
WHERE
// -- node(s) are active
downline.activeFrom <= '2015-08-31 23:59:59'
AND (downline.activeTo IS NULL OR downline.activeTo > '2015-08-31 23:59:59')
UNWIND tree AS branch
WITH branch, downline
WHERE
// -- branch is active
branch.activeFrom <= '2015-08-31 23:59:59'
AND (branch.activeTo IS NULL OR branch.activeTo > '2015-08-31 23:59:59')
RETURN downline
奖金
我已经用这些数据设置了一个 neo4j 沙箱,供你们根据需要使用。 请对此成熟,因为我不知道如何使其只读。请不要去删除数据并为其他人搞砸事情。我也亲自为这个云实例付费,所以请不要滥用虚拟机/资源:)
您可以在此处访问它:(抱歉,出于安全考虑,问题已得到解答,因此已将其删除)。
【问题讨论】:
标签: database neo4j cypher graph-databases