我是neo4J的新手,目前我正在开发一个应用程序,其中包括谷歌饼图,以显示基于优先级的风险计数。我们在应用程序和这些应用程序之间的接口上存在风险。目标是用一个图例显示应用程序(节点)和接口(边)的风险。
我可以使图表工作,并在应用程序、节点和接口边缘显示风险,但我只能使用UNION来实现它。这个解决方案的问题是,我每种颜色都有两片,一片用于节点,另一片用于边缘。现在的情况如下:https://ibb.co/C5WtN1w
我也试过使用和收集,但我真的不明白它们是如何工作的,因为我得到了愚蠢的结果,像7k“黄色”,虽然总共有135黄色。
目前,我的请求是这样的
MATCH (n:Risk)
WHERE NOT (n.color="grey")
RETURN n.Priority as legend , count(*) AS count, n.color_hex AS colors ORDER by n.Priority
UNION
MATCH ()-[r:INTERFACE]->()
WHERE (r.color="yellow" or r.color="orange" or r.color="red")
RETURN r.Priority AS legend, count(*) AS count, r.color_hex AS colors ORDER BY r.Priority为了澄清这些性质:
是否有可能计算每种颜色的出现次数,并使合并来自n:Risk和r:接口的颜色的计数只列出每种颜色中的一种?
希望我已经说得够清楚了,信息在我脑海中流淌,所以它可能会让我感到困惑。
耽误您时间,实在对不起
发布于 2019-07-24 13:24:25
在UNION之后,我们无法处理结果。但是,通过将与、COLLECT和展开相结合,可以得到预期的结果。
要获得合并的结果,您可以如下所示修改查询:
MATCH (n:Risk)
WHERE NOT (n.color="grey")
WITH collect({Priority: n.Priority , color_hex: n.color_hex}) AS risks
MATCH ()-[r:INTERFACE]->()
WHERE r.color IN ["yellow", "orange", "red"]
WITH risks + collect({Priority: r.Priority , color_hex: r.color_hex}) AS allRisks
UNWIND allRisks as risk
RETURN risk.Priority as legend , count(*) AS count, risk.color_hex AS colors
ORDER BY risk.Priorityhttps://stackoverflow.com/questions/57180723
复制相似问题