我有一个我查询的 Neo4J 数据库,例如获取 E 和 F 之间的最短路径(但它可以是数据库的任何子图)。我使用 R 中的 RNeo4J 驱动程序来执行此操作。
我想使用 Cypher 将路径作为边缘列表返回给 R,以便我可以直接使用边缘列表来创建 Igraph 对象并绘制或分析它。
我是 Cypher 的新手,但一直在使用浏览器尝试以下查询行中的某些内容:
"MATCH p = shortestpath((n)-[*..5]->(m))
WHERE n.nodename = 'E' AND m.nodename = 'F'
WITH p
MATCH (f)-->(t)
WHERE f IN nodes(p) AND t IN nodes(p)
RETURN DISTINCT f.nodename, t.nodename"
这会生成一个包含最短路径的边列表(例如 E->G->F),但还包括一些不在最短路径上的节点(例如 I 和 C)但与其相邻的节点为 (E->C, C-> E, 和 G->I->F)...
我在正确的轨道上吗?如何确保在我的第二个 MATCH 语句中只考虑最短路径中的节点?有更好的方法吗?任何帮助将不胜感激。
/詹尼克