使用 Cypher 遍历图并将结果集呈现为 table
Traversing Graph using Cypher and presenting resultset as a table
大家好!
我是 Neo4j 和 Cypher 的初学者,对以下功能有疑问:
我有一个节点的非循环有向图,这些节点与 :DATA_FLOWS
条边
相连
两个节点之间可能有不止一条边,因为这些边可能具有不同的边属性 - scenario_id
当我select一个或多个节点(按组)并尝试按一个或多个scenario_id(边的属性)进行过滤时,我想查看所有依赖于我的 select 离子和边缘过滤器
的特定深度 (*..n) 的从属节点
我正在使用以下查询:
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;
这在以漂亮的视觉方式呈现结果的 Neo4j 浏览器中看起来不错,但我需要在 Tom Sawyer Perspective 中运行此查询,它需要类似于平面表的结果集,而不是 Json...
所以我的查询,在多次尝试失败后,看起来像:
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
- 我不认为它会带来正确的结果,而且速度非常慢...
如果有人向我提供有关如何改进、重写等查询并获得更好性能的任何建议,我将不胜感激。
提前谢谢你,
弗拉德
要以表格方式制定 neo4j 数据,您应该考虑使用 neo4j-jdbc driver,它允许您像访问任何其他关系数据库一样访问 neo4j 数据库。
我不熟悉 Tom Sawyer Perspective,但支持从 JDBC 连接中提取数据的可视化工具确实很常见,因此这可能会让您的生活更轻松,并且意味着您不需要在将数据导入您的工具之前,甚至必须将数据导出为表格文件格式 (CSV)。
大家好!
我是 Neo4j 和 Cypher 的初学者,对以下功能有疑问:
我有一个节点的非循环有向图,这些节点与
:DATA_FLOWS
条边 相连
两个节点之间可能有不止一条边,因为这些边可能具有不同的边属性 - scenario_id
当我select一个或多个节点(按组)并尝试按一个或多个scenario_id(边的属性)进行过滤时,我想查看所有依赖于我的 select 离子和边缘过滤器
的特定深度 (*..n) 的从属节点
我正在使用以下查询:
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;
这在以漂亮的视觉方式呈现结果的 Neo4j 浏览器中看起来不错,但我需要在 Tom Sawyer Perspective 中运行此查询,它需要类似于平面表的结果集,而不是 Json...
所以我的查询,在多次尝试失败后,看起来像:
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
- 我不认为它会带来正确的结果,而且速度非常慢...
如果有人向我提供有关如何改进、重写等查询并获得更好性能的任何建议,我将不胜感激。
提前谢谢你, 弗拉德
要以表格方式制定 neo4j 数据,您应该考虑使用 neo4j-jdbc driver,它允许您像访问任何其他关系数据库一样访问 neo4j 数据库。
我不熟悉 Tom Sawyer Perspective,但支持从 JDBC 连接中提取数据的可视化工具确实很常见,因此这可能会让您的生活更轻松,并且意味着您不需要在将数据导入您的工具之前,甚至必须将数据导出为表格文件格式 (CSV)。