Database Neo4j在新查询中使用每个结果

Database Neo4j在新查询中使用每个结果,database,graph,neo4j,graph-databases,Database,Graph,Neo4j,Graph Databases,我在学习Neo4j的同时玩狗的系谱图。以下查询为我提供了与多个节点具有:PARENT_关系的所有节点 match (n)-[r:PARENT_OF]->() with n, count(r) as rel_cnt where rel_cnt > 1 return n; 对于示例图,这将产生两个节点。现在我想将其与下一个查询结合起来,以获取固定子级(a)和可变父级(第一个查询的结果)之间的路径: match p=(child:Dog{name:“A”})一个简单的建议,您可以使用技巧

我在学习Neo4j的同时玩狗的系谱图。以下查询为我提供了与多个节点具有:PARENT_关系的所有节点

match (n)-[r:PARENT_OF]->() with n, count(r) as rel_cnt where rel_cnt > 1 return n;
对于示例图,这将产生两个节点。现在我想将其与下一个查询结合起来,以获取固定子级(a)和可变父级(第一个查询的结果)之间的路径:


match p=(child:Dog{name:“A”})一个简单的建议,您可以使用技巧从节点获取关系类型的程度,这比扩展关系并获取其计数要高效得多

另外,在这种特殊情况下,您不必使用WITH,您可以立即重用
n
变量

MATCH (n)
WHERE size((n)-[r:PARENT_OF]->()) > 1
MATCH p =(child:Dog {name: "A"})<-[:PARENT_OF*0..]-(n) return p
匹配(n)
其中大小((n)-[r:父元素]->())>1
MATCH p=(child:Dog{name:“A”})不需要(而且效率很低)首先获取具有多个子级的所有父级,只需要获取从特定子级到其具有多个子级的父级的路径

相反,您可以只获取特定的孩子,然后查看其父母各有多少个孩子。例如:

MATCH p = (child:Dog {name: "A"})<-[:PARENT_OF]-(n)
WHERE SIZE((n)-[:PARENT_OF]->()) > 1
RETURN p;
MATCH p=(子:Dog{name:“A”})()>1
返回p;
MATCH p = (child:Dog {name: "A"})<-[:PARENT_OF]-(n)
WHERE SIZE((n)-[:PARENT_OF]->()) > 1
RETURN p;