我正在使用 Neo4j 来跟踪 OOP 架构中的关系。让我们假设节点代表类并且(u) -[:EXTENDS]-> (v)
如果类u
扩展类v
(即对于每个节点,最多有一个类型为 的出边EXTENDS
)。我正在尝试找出给定类 ( n
) 的一系列前置类。我使用了以下 Cypher 查询:
start n=node(...)
match (n) -[:EXTENDS*]-> (m)
return m.className
我需要以这样的顺序处理节点,即类的直接前身排在n
第一位,其前身排在第二位,依此类推。似乎 Neo4j 引擎完全按照这个顺序返回节点(给定上述查询) - 这是我应该做的吗依赖或可能会在未来的某些版本中突然改变这种行为?
如果我不应该依赖这种行为,什么 Cypher 查询将允许我以给定的顺序获取所有前驱节点?我正在考虑以下查询:
start n=node(...)
match p = (n) -[:EXTENDS*]-> (m {className: 'Object'})
return p
这会很好,但我想避免指定根类(Object
在这种情况下)。