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

时间:2013-03-12 19:36:30

标签: graph nosql neo4j cypher

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

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

START a = node(3),b = node(4)

MATCH x- [*] - > a,x- [*] - > b

返回x;

此查询返回x的节点2,但我怎样才能确保自己永远不会返回1?

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

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

http://console.neo4j.org/r/ntvwuz