使用Cypher遍历图形并将结果集显示为表格

时间:2015-01-07 16:41:51

标签: performance cypher traversal

向所有人致意!

我是Neo4j和Cypher的初学者,并且遇到以下功能问题:

  1. 我有一个与:DATA_FLOWS边连接的节点的非循环有向图

  2. 两个节点之间可能有多个边缘,因为这些边可能具有不同的Edge属性 - scenario_id

  3. 当我选择一个或多个节点(按组)并尝试按一个或多个scenario_id(边缘的属性)进行过滤时,我希望看到某个深度的所有相关节点(* .. n )取决于我的选择和边缘过滤器

  4. 我使用以下查询: match p= (src:Node)-[:DATA_FLOWS*..5]->(dst:Node) where src.group_id IN {Group} and all(x in RELATIONSHIPS(p) WHERE x.scenario_id IN {Scenario} ) RETURN p;

  5. 在Neo4j浏览器中看起来很不错,它以一种很好的视觉方式呈现结果,但是我需要在Tom Sawyer Perspective中运行这个查询,它需要平坦的表格结果集,而不是Json ... < / p>

  6. 因此,经过多次尝试失败后,我的查询如下: match p= (src:Node)-[:DATA_FLOWS*..5]->(dst:Node) where src.group_id IN {Group} and all(x in RELATIONSHIPS(p) WHERE x.scenario_id IN {Scenario} ) WITH p MATCH (a)-[r:DATA_FLOWS]->(b) where all(x in RELATIONSHIPS(p) WHERE ID(x) = ID(r)) RETURN a.id, r.scenario_id, b.id

  7. 我认为它不会带来正确的结果而且速度非常慢......
  8. 如果有人向我提供有关如何改进,重写等查询并获得更好性能的建议,我将不胜感激。

    提前谢谢你, 维拉德

1 个答案:

答案 0 :(得分:0)

要以表格方式表示neo4j数据,您应该考虑使用neo4j-jdbc driver,它允许您访问neo4j数据库,就像它是任何其他关系数据库一样。

我不熟悉Tom Sawyer Perspective,但是可视化工具支持从JDBC连接中提取数据非常普遍,因此这可能会让您的生活变得更轻松,并且意味着您甚至不必导出在将数据带入工具之前,将数据转换为表格文件格式(CSV)。