Graph 我可以使用Cypher来保证树结构的MRCA吗?

Graph 我可以使用Cypher来保证树结构的MRCA吗?,graph,nosql,neo4j,cypher,Graph,Nosql,Neo4j,Cypher,大家好,我一直在使用neo4j和树数据,到目前为止效果很好。然而,我似乎找不到太多关于模式匹配通常如何工作的文档,因此我可以验证我正在进行的查询是否具有预测结果 我有一个节点为1,2,3,4的树,其中2是1的子节点,3+4都是2的子节点。有从1到2、2到3和2到4的定向边。如果我执行以下Cypher查询,我是否总是为返回节点x获取最新的公共祖先 开始a=节点(3),b=节点(4) 匹配x-[*]->a,x-[*]->b 返回x 此查询返回x的节点2,但我如何保证它永远不会返回1?您可以执行以下操

大家好,我一直在使用neo4j和树数据,到目前为止效果很好。然而,我似乎找不到太多关于模式匹配通常如何工作的文档,因此我可以验证我正在进行的查询是否具有预测结果

我有一个节点为1,2,3,4的树,其中2是1的子节点,3+4都是2的子节点。有从1到2、2到3和2到4的定向边。如果我执行以下Cypher查询,我是否总是为返回节点x获取最新的公共祖先

开始a=节点(3),b=节点(4)

匹配x-[*]->a,x-[*]->b

返回x


此查询返回x的节点2,但我如何保证它永远不会返回1?

您可以执行以下操作:

start a=node(3), b=node(4)
match pa=x-[*]->a, pb=x-[*]->b
return x
order by length(pa) + length(pb)
limit 1

在这里写了一个更大的例子——您不必使用两条路径: