Neo4j:return 路径中节点之间的关系

Neo4j : return relationship between nodes in a path

根据我的架构,我有一个 "Project" 节点和多个 "Revision" 节点连接到项目。每个其他节点都连接到 "Revision" 个适用的节点。我需要获取连接到特定 "Revision" 节点的所有节点。在获取节点时,我也需要获取这些节点之间的关系。我需要限制连接到特定版本的节点。

我尝试了以下查询,但是,它降低了性能,因为在分析时数据库命中率更高。每个修订将有大约 28k 个节点和它们之间的 76k 个关系。

MATCH (a:Project{name:{0}})-[h:HAS_REVISION]->(r:Revision)
WITH a
MATCH p=(a)-[h]->(r)-[*0..2]->(allRelatedNodes)
WHERE r.revisionNo={1} AND (r)-[]->(allRelatedNodes)
RETURN a, relationships(p), nodes(p)  

以下查询具有成本效益。我在查询浏览器内数据库时得到了预期的结果。但是,在从我的 Java 应用程序执行时,连接到特定的节点之间的关系 "Revision" 未提取。

PROFILE  
MATCH (project:Project {name> :"test_local"})-[:HAS_REVISION]-
(revision:Revision{revisionNo:1})
WITH project,revision
MATCH p = (revision)-[]-(allRelatedNodes)
WITH project,revision,collect(p) as rs
RETURN project,revision,rs  

谁能帮忙。

我使用 apoc.path.subgraphAll 程序解决了这个问题。我的要求ui评论是"i need to get all nodes connected to revision and also relations between those nodes connected to revision node"。第二个查询在 neo4j 浏览器 ui 中给出了预期的结果,但关系 b/w 节点未映射到 java neo4j 实体中。最后这就是我所做的, match (project:Project {name :{0}})-[:HAS_REVISION]- " + "(revision:Revision{revisionNo:{1}}) " + "call apoc.path.subgraphAll(revision,{maxLevel:1}) yield nodes,relationships " + "return nodes,relationships;
在 neo4j 的插件文件夹中手动复制 apoc jar。谢谢大家的建议。