暗号查询 - 这是与2个或更多的间接节点
不确定的第2层关系的回报节点如何最好地字本 - 下面的图中暗号查询 - 这是与2个或更多的间接节点
我试图返回的所有节点第二层节点与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
这确实出现了工作,因为它筛选出只有一个链接到一个绿色节点粉红色的节点,但我无法弄清楚如何只返回粉红色的节点,其中相关的绿色节点不是同一个节点
UPDATE
当增加一个独特的收集&删除where子句完全,我得到一个完全不同的曲线,但它实际上是接近我想要显示
我仍然希望看到与多个绿色节点相关的所有粉色节点 - 但我不想看到仅与一个绿色节点(屏幕左下角的6个粉色节点)相关的粉色节点
这是我的Cypher - 我不确定为什么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
使用DISTINCT
关键字为collect
(docs):
的
DISTINCT
运营商一起工作与聚集。它用于在通过聚合函数运行它们之前使所有值都具有唯一性。
另外,为简明起见,您可以在MATCH
子句内移动支票id
。
更新。试试这个。
MATCH (i:IFB_Flagged)-[r]->(m:Matters)<-[r2]-(ie:Indirect_Entity)
WHERE i.id = '385886'
WITH i, ie, collect(distinct m) AS overlap
WHERE size(overlap) > 1
RETURN i, ie, overlap
LIMIT 20
我相信您的解决方案是正确的答案。但是,在我看来,问题中提供的问题描述与描述的输出不匹配。你同意? –
我同意问题中的颜色已关闭。 –
就是这样!非常感谢 –
但在你的榜样绿色节点是所有红色节点相同,同为每个红色节点的两个关系......总之,可以尝试在一个独特的条款在您的收集,是这样的:'收集(明确的m)' –
问题的措词不符合你实际上想要的。 – cybersam
问题中的红色节点实际上更像粉红色。让我们等待OP得到这个结果。 –