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在遍历时返回重复节点_Neo4j_Cypher_Neo4j Ogm_Neo4j Apoc - Fatal编程技术网

Neo4j在遍历时返回重复节点

Neo4j在遍历时返回重复节点,neo4j,cypher,neo4j-ogm,neo4j-apoc,Neo4j,Cypher,Neo4j Ogm,Neo4j Apoc,查询ne04j的遍历顺序时。它要遍历多个节点。 我附加cypher查询以创建节点和关系,并返回结果。 感谢您的帮助 CREATE (a:Package {name:'A'}) CREATE (b:Package {name:'B'}) CREATE (c:Package {name:'C'}) CREATE (d:Package {name:'D'}) CREATE (e:Package {name:'E'}) CREATE (f:Package {name:'F'}) CREATE (g:Pa

查询ne04j的遍历顺序时。它要遍历多个节点。 我附加cypher查询以创建节点和关系,并返回结果。 感谢您的帮助

CREATE (a:Package {name:'A'})
CREATE (b:Package {name:'B'})
CREATE (c:Package {name:'C'})
CREATE (d:Package {name:'D'})
CREATE (e:Package {name:'E'})
CREATE (f:Package {name:'F'})
CREATE (g:Package {name:'G'})
CREATE (h:Package {name:'H'})
CREATE (i:Package {name:'I'})
CREATE (o:Package {name:'O'})
CREATE (z:Package {name:'Z'})
CREATE (j:SEG2 {name:'India'})
CREATE (k:SEG1 {name:'Natural Account'})
CREATE (l:SEG3 {name:'Engineering'})
CREATE (m:SEG4 {name:'Currency'})


create (a)-[:DEPENDS_ON]->(b)
create (a)-[:DEPENDS_ON]->(d)
create (d)-[:DEPENDS_ON]->(e)
create (b)-[:DEPENDS_ON]->(c)
create (b)-[:DEPENDS_ON]->(f)
create (b)-[:DEPENDS_ON]->(g)
create (h)-[:DEPENDS_ON]->(g)
create (i)-[:DEPENDS_ON]->(a)
create (z)-[:DEPENDS_ON]->(a)
create (i)-[:DEPENDS_ON]->(z)
create (o)-[:DEPENDS_ON]->(i)
create (j)-[:MAP_TO]->(a)
create (k)-[:MAP_TO]->(a)
create (l)-[:MAP_TO]->(a)
create (m)-[:MAP_TO]->(a)
return a,b,c,d,e,f,g,h,i,j,k,l,m,o,z
密码查询:

MATCH (s3:SEG3{name:'Engineering'})-[:MAP_TO]->(ANODE:Package{name:'A'}) 
WITH ANODE 
MATCH (s4:SEG4{name:'Currency'})-[:MAP_TO]->(ANODE)  
MATCH (GG)-[:DEPENDS_ON*0..]->(ANODE) 
RETURN collect(GG.name)
结果:

["A", "I", "O", "Z", "I", "O"]
我在等你

["A","Z", "I", "O"]

这是因为您可以通过数据中的多个路径获得结果。根据聊天内容,您需要解决依赖关系的顺序。要获得此顺序,可以从根目录按最大路径长度排序:

MATCH (s3:SEG3{name:'Engineering'})-[:MAP_TO]->(ANODE:Package{name:'A'}),
  (s4:SEG4{name:'Currency'})-[:MAP_TO]->(ANODE),
  p=(GG)-[:DEPENDS_ON*0..]->(ANODE) 
WITH GG.name as name,max(length(p)) as l
ORDER BY l
RETURN collect(name)

还请注意,您不必为模式的每个部分重复
MATCH
子句。

感谢您的回复。我的结果集是否会根据依赖关系而定?如果您看到我的依赖关系Z->A,I->ao->I,I->Z。这意味着Z需要在I之前进行处理。因此结果应该是[A Z I O]我尝试了您的查询,响应是[“A”、“I”、“O”、“Z”],但预期是[“A”、“Z”、“I”、“O”]您需要更好地描述规则,例如,为什么它不是
A I Z O
?请注意,您的数据中有从A到I的直接链接。我同意A有到I的直接链接。作为A->Z,A->I但是I->Z所以Z需要被处理。如何定义规则,以便按正确的顺序执行?但正确的顺序是什么?请更新您的问题并解释您想要的订单。