在cypher neo4j

时间:2017-11-01 14:55:11

标签: neo4j cypher

有没有办法只获取Cypher查询中存在的节点和关系,而不是节点之间的其他关系?

我们知道节点之间可以有许多不同类型的关系。但在分析期间,我们只想查看特定类型的关系。剩下的就是杂乱无章。以电影数据库为例,让我们使用以下查询。

match (p:Person)-[:ACTED_IN]->(m:Movie) 
where p.name='Tom Hanks'
return p, m;

在这个查询中,我们得到了一张很棒的汤姆汉克斯以及他演过的所有电影的图表。但是我们也得到了电影“那件事你做”的关系[:DIRECTED],这很有趣但取决于你分析,这是一个分心。我只想显示[:ACTED_IN]关系。使用下一个查询

match (p:Person)-[:ACTED_IN]->(m:Movie)<-[:DIRECTED]-(d:Person)  
where p.name='Tom Hanks'
return p, m, d;

我们可以很好地了解每部电影的导演。但是,屏幕上的[:KNOWS]关系混乱,导致分心。

我知道有几个数据可视化产品可以做到这一点,但我们在POC中,我们需要首先获得数据库。如果我还要添加数据可视化工具,这将是一个更难的销售。更难但不是不可能出售。

目前,我正在使用Neo4j 3.2,但很快就会升级到3.3进行实际演示。

1 个答案:

答案 0 :(得分:2)

  

有没有办法只获取Cypher查询中存在的节点和关系,而不是节点之间的其他关系?

解决方案包括两个步骤。

  1. 返回关系,例如:

    match (p:Person)-[a:ACTED_IN]->(m:Movie)
    where p.name='Tom Hanks'
    return p, a, m
    
  2. 通过转到设置菜单底部并取消选中连接结果节点来关闭自动完成功能。