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 - Fatal编程技术网

Neo4j 在cypher中将多个关系作为一个返回

Neo4j 在cypher中将多个关系作为一个返回,neo4j,cypher,Neo4j,Cypher,考虑一个从节点a到节点D的查询,您必须遍历几个关系,例如 (:Person)-[:LIVES_IN]->(:State)-[:HAS]->(:Parks) 我想动态返回一个人在其状态下可以去的所有可能的公园,而不需要在查询中返回状态本身,这样返回的关系看起来像 (:Person)-->(:Parks) 换言之,以便: 查询是什么样子的 谢谢您抽出时间如果您想获得一个人可以去的所有公园,您只需查询: MATCH (:Person)-[*]->(p:Parks) RET

考虑一个从节点a到节点D的查询,您必须遍历几个关系,例如

(:Person)-[:LIVES_IN]->(:State)-[:HAS]->(:Parks)
我想动态返回一个人在其状态下可以去的所有可能的公园,而不需要在查询中返回状态本身,这样返回的关系看起来像

(:Person)-->(:Parks)
换言之,以便:

查询是什么样子的


谢谢您抽出时间

如果您想获得一个人可以去的所有公园,您只需查询:

MATCH (:Person)-[*]->(p:Parks)
RETURN p

你可以使用APOC来返回一个虚拟关系,比如这样

MATCH (person:Person {name: 'Dave'})-[:LIVES_IN|HAS*]->(park:Park)
WITH person, park
CALL apoc.create.vRelationship(person,'CAN_VISIT',{}, park) YIELD rel
RETURN person, park, rel

问题是出于我的目的,我需要路径,因此当我执行p=(query)返回p时,结果是A和D之间的所有内容。这就是为什么我试图将路径简化为一个关系。但是如果需要路径,结果应该是所有内容,因为(:Person)和(:Park)之间没有直接关系。那么您应该定义一些约束。Trujillo,也许编辑你的帖子并添加一个更完整的例子是个好主意。也许一个图表更接近你的真实问题(个人、公园和州)以及你希望通过密码查询得到的结果。@DaveBennett的答案实际上非常接近我所需要的,但谢谢你的时间@H.Trujillo您可以在如下匹配时将路径存储在变量中匹配路径=(:Person)-[*]->(park:Parks)RETURN park,path;请注意,这将为您提供所有可能的路径。如果您只需要一条路径,您需要以某种方式进行过滤(如使用最短路径函数),谢谢Dave!这实际上非常接近我想要的,我只需要调整一些东西。我是新的,所以我投了更高的票,但它没有显示出来,但我不知道如何选择你的作为正确的一个