我是Neo4j的新手。我有一个表示主机上安装的所有RPM的图,所以我有一个主机节点和多个RPM节点,它们之间具有“已安装”关系。为此,我还具有一些RPM-> RPM关系用于RPM依赖关系。因此,这是两个RPM节点之间的“依赖”关系。
我想在Neo4j浏览器上显示整个图表(有限制)。但是,由于依赖项也安装在主机上,因此仍会显示依赖项的“安装位置”关系并连接到主机节点。这使得整个图形更难以阅读。
我想仅保留“ depends on”关系作为依赖关系,并屏蔽“ installed in”关系。我将仅显示不依赖于另一个RPM的顶级RPM的“已安装”关系。
是否可能有这样的查询?
编辑:
我有很多数据(来自Elasticsearch),很多RPM,并且只有一个主机,无论我设置的LIMIT如何,我都希望主机始终出现在图形上(基本上我希望主机是第一个主机)节点)
答案 0 :(得分:2)
1)添加测试数据:
CREATE (N:Host)
CREATE (P1:RPM)
CREATE (P2:RPM)
CREATE (P3:RPM)
CREATE (P1)-[r1:`installed in`]->(N)
CREATE (P2)-[r2:`installed in`]->(N)
CREATE (P3)-[r3:`installed in`]->(N)
CREATE (P2)-[r4:`depends on`]->(P3)
RETURN *
2)并使用CASE
:
MATCH (P:RPM)-[r1:`installed in`]->(:Host)
OPTIONAL MATCH (P)-[r2:`depends on`]->(:RPM)
WITH CASE WHEN r2 IS NULL
THEN r1
ELSE r2
END as relation
RETURN startNode(relation) as rpmNode,
relation,
endNode(relation) as relatedNode