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

Neo4j 这是返回子树的每个节点的最佳密码吗?

Neo4j 这是返回子树的每个节点的最佳密码吗?,neo4j,cypher,Neo4j,Cypher,我有一个树状结构的图(不,更多的是DAG,因为我可以有多个父节点),并且需要能够编写查询,从一个特定节点开始,向下返回一个平面列表中的所有结果 我已经将我的一个用例简化为这个简单的例子。在这里的ascii表示中,n是我的节点,我已经附加了它们的id。p是我的身份验证系统中的权限,但与问题相关的是,它标记了我需要向下递归以收集查询应返回的节点的位置 可以有多个与p相关的根节点 结果中应包含根,如下面的n3,以及子项 关系深度是无限的 图表: n1 ^ ^ / \ n2 n

我有一个树状结构的图(不,更多的是DAG,因为我可以有多个父节点),并且需要能够编写查询,从一个特定节点开始,向下返回一个平面列表中的所有结果

我已经将我的一个用例简化为这个简单的例子。在这里的ascii表示中,n是我的节点,我已经附加了它们的id。p是我的身份验证系统中的权限,但与问题相关的是,它标记了我需要向下递归以收集查询应返回的节点的位置

  • 可以有多个与p相关的根节点
  • 结果中应包含根,如下面的n3,以及子项
  • 关系深度是无限的
图表:

   n1
  ^ ^
 /   \
n2    n3<--p
     ^ ^
    /   \
   n4    n5
  ^
 /
n6
n1
^ ^
/   \

n2 n3这可能适合您的需要:

MATCH (c)-[:HAS_PARENT*0..]->(root:n)<--(:p)
RETURN root, COLLECT(c) AS tree

MATCH(c)-[:HAS_PARENT*0..]>(root:n)我不需要返回单独的根或执行collect(),但这提供了我所需要的。我缺少的概念是:没有数字的a*默认为1而不是0,并且c和root之间的路径长度为0在逻辑上意味着c是root。谢谢
MATCH (n:n)<--(:p)
WITH collect (n) as parents, (n) as n
OPTIONAL MATCH (c)-[:HAS_PARENT*]->(n)
WITH collect(c) as children, (parents) as parents
UNWIND (parents+children) as tree
RETURN tree
MATCH (c)-[:HAS_PARENT*0..]->(root:n)<--(:p)
RETURN root, COLLECT(c) AS tree