3

您好,我一直在使用 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?

4

1 回答 1

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

于 2013-03-13T06:27:41.830 回答