有没有办法只获取 Cypher 查询中存在的节点和关系,而不获取节点之间的其他关系?
我们知道节点之间可以有许多不同类型的关系。但是,在分析过程中,我们只想查看特定类型的关系。剩下的就是杂乱。以电影数据库为例,让我们使用以下查询。
match (p:Person)-[:ACTED_IN]->(m:Movie)
where p.name='Tom Hanks'
return p, m;
Run Code Online (Sandbox Code Playgroud)
在这个查询中,我们得到了 Tom Hanks 和他演过的所有电影的漂亮图表。然而,我们也得到[:DIRECTED]了电影“你做的那件事”的关系,这很有趣,但取决于你正在分析的内容,它会让人分心。我只想显示[:ACTED_IN]关系。使用下一个查询
match (p:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(d:Person)
where p.name='Tom Hanks'
return p, m, d;
Run Code Online (Sandbox Code Playgroud)
我们对每部电影的导演都有很好的了解。不过,在这里,屏幕上杂乱无章的[:KNOWS]关系导致分心。
我知道有几个数据可视化产品可以做到这一点,但我们处于 POC 中,我们需要先获取数据库。如果我还必须添加数据可视化工具,那将更难销售。更难,但并非不可能出售。
目前,我使用的是 Neo4j 3.2,但很快就会升级到 3.3 进行实际演示。