【发布时间】:2017-10-19 17:24:29
【问题描述】:
不确定如何最好地表达这一点 - 在下图中
我正在尝试返回第二层节点与 2 个或更多第一层节点相关的所有节点,但仅返回第一层节点不同的节点。因此,在示例图片中,我想返回灰色节点 660082、绿色节点 110258 以及与之相关的所有粉红色节点和关系。例如,我不想看到粉色节点与同一个绿色节点有 2 个关系的绿色节点。到目前为止,我的密码看起来像这样
MATCH (i:IFB_Flagged)-[r]->(m:Matters)<-[r2]-(ie:Indirect_Entity)
WITH i, ie,r, collect(m) AS overlap
WHERE size(overlap) > 1 and i.id = '660082'
RETURN i, ie, overlap
这似乎确实有效,因为它过滤掉了只有一个链接到绿色节点的粉色节点,但是我不知道如何只返回相关绿色节点不是同一个节点的粉色节点
更新
当向 collect 添加一个 distinct 并完全删除 where 子句时,我得到一个完全不同的图表,但它实际上更接近我想要显示的
我仍然希望看到与多个绿色节点相关的所有粉色节点 - 但是我不想看到仅与一个绿色节点相关的粉色节点(屏幕左下方的 6 个粉色节点)
这是我的密码 - 我不确定为什么 collect(distinct m) 在这种情况下不起作用?
MATCH (i:IFB_Flagged)-[r]->(m:Matters)<-[r2]-(ie:Indirect_Entity)
WITH i, ie,r, collect(distinct m) AS overlap
WHERE i.id = '385886'
RETURN i, ie, overlap limit 20
【问题讨论】:
-
但在您的示例中,所有红色节点的绿色节点都相同,每个红色节点的两个关系都相同...无论如何,尝试在您的集合中放置一个不同的子句,这样:@ 987654327@
-
问题的措辞与您真正想要的不符。
-
问题中的红色节点实际上更像粉红色。让我们等待 OP 弄清楚这一点。
-
为了清楚起见编辑了我原来的问题
-
“我不确定为什么 collect(distinct m) 在这种情况下不起作用?”它不起作用,因为您在
WITH子句中留下了变量r,因此它将分别聚合在每个r上。