Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Neo4j中从节点M开始得到n级方向的完全子图_Java_Neo4j_Cypher - Fatal编程技术网

Java 如何在Neo4j中从节点M开始得到n级方向的完全子图

Java 如何在Neo4j中从节点M开始得到n级方向的完全子图,java,neo4j,cypher,Java,Neo4j,Cypher,不久前我问了这个问题,发现虽然它确实给出了第n级的所有节点和关系,但答案假定这些关系的方向要么从起始节点扇出,要么收敛到节点。我要寻找的是一个完整的子图,它可以捕获特定级别上的所有关系和节点,同时保留和关联关系的方向 例如,如果我希望所有节点和关系都位于深度2,我可以进行无方向查询,如下所示: START n=节点(12345) 比赛(n)(m) 返回r,m 这很有效,因为我得到了所有节点和所有关系,但我发现我不知道这些关系的方向是什么 如果我将搜索深度限制为1,并执行两次搜索,一次传入,一次传

不久前我问了这个问题,发现虽然它确实给出了第n级的所有节点和关系,但答案假定这些关系的方向要么从起始节点扇出,要么收敛到节点。我要寻找的是一个完整的子图,它可以捕获特定级别上的所有关系和节点,同时保留和关联关系的方向

例如,如果我希望所有节点和关系都位于深度2,我可以进行无方向查询,如下所示:

START n=节点(12345)
比赛(n)(m)
返回r,m

这很有效,因为我得到了所有节点和所有关系,但我发现我不知道这些关系的方向是什么

如果我将搜索深度限制为1,并执行两次搜索,一次传入,一次传出,我可以通过这种方式获得所有节点和方向关系。然后,我可以递归地对在深度2找到的所有节点执行相同的查询,丢弃包含从一开始就在第二级之外未找到的节点的任何关系。这似乎是相当痛苦和手动,但它的工作

我还尝试在嵌入式JavaAPI中使用TraversalDescription框架,但这并没有返回所有关系。例如,以下代码段为我提供了深度2的所有节点,但它遗漏了深度2节点之间的一些关系:

for(路径位置:graphDb.traversalDescription()
.breadthFirst()
.评估员(评估员,第(2)步)
.traverse(模板节点))
{
输出+=位置+“\n”;
}


有没有一种不需要多次手动迭代的简单方法可以做到这一点?

无方向查询没有箭头提示

如果您想知道方向,请使用:

START n=node(12345)
 MATCH (n)-[r*1..2]->(m)
 RETURN r, m;
您可以访问rel的开始和结束节点,然后输出它们以推断它们的方向

START n=node(12345)
 MATCH (n)-[rels*1..2]->(m)
 RETURN m, extract(r in rels | [startNode(r),endNode(r),type(r)]);

这是可行的,尽管它也会重复关系。是否有办法修改此查询,使我不会多次看到相同的关系?