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
Neo4j Cypher-可变长度匹配不显示所有关系_Neo4j_Cypher_Graph Databases - Fatal编程技术网

Neo4j Cypher-可变长度匹配不显示所有关系

Neo4j Cypher-可变长度匹配不显示所有关系,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我有一个节点和关系数量未知的树,从单个节点开始,我需要返回连接到该节点的所有节点和关系(最多5跳)。我遇到的问题是,当使用大于2的变量路径时,查询不会返回连接到起点的一些节点 此查询返回137个节点: MATCH (n)-[*1..5]->(q) WHERE n.name='Bob' RETURN * LIMIT 500 此查询返回300个节点: MATCH (n)-[*1..2]->(q) WHERE n.name='Bob' RETURN * LIMIT 500 这怎么可能?

我有一个节点和关系数量未知的树,从单个节点开始,我需要返回连接到该节点的所有节点和关系(最多5跳)。我遇到的问题是,当使用大于2的变量路径时,查询不会返回连接到起点的一些节点

此查询返回137个节点:

MATCH (n)-[*1..5]->(q) WHERE n.name='Bob' RETURN * LIMIT 500
此查询返回300个节点:

MATCH (n)-[*1..2]->(q) WHERE n.name='Bob' RETURN * LIMIT 500
这怎么可能?可变长度不是返回从Y跳到X跳的所有节点吗


我觉得我遗漏了一些关于可变长度工作原理的基本知识,但在文档中找不到任何相关信息。

是的,应该这样做。你有你的数据集的例子吗?如果使用
返回不同的q
,会发生什么?它可以工作!我得到了所有的数据。但是,DISTINCT不应该防止重复吗?为什么[*1..2]显示第一跳节点而[1..5]不显示?我不知道。我猜在被忽略的查询中会有一些不同,比如在*1..2的关系上缺少一个方向箭头,但是如果你正在运行你粘贴的内容,那么我看不出有问题。有没有一种方法可以使用DISTINCT返回所有节点和关系?我尝试了
MATCH(n)-[*1..5]->(q),其中n.name='Bob'返回DISTINCT*LIMIT 1000
,我仍然得到部分结果-306个节点,但使用
DISTINCT q
时,我得到743个结果。对。这个数字是有意义的,如果不使用DISTINCT,将会有更多的节点。目前,我只想避免使用
RETURN*
,并明确说明返回的内容。我会看看是否能找出
RETURN*
为什么会这样做。