私は Neo4j を使用して OOP アーキテクチャの関係を追跡しています。(u) -[:EXTENDS]-> (v)
ノードがクラスを表し、クラスがクラスをu
拡張すると仮定しv
ます (つまり、各ノードにはタイプ の出力エッジが最大で 1 つ存在しますEXTENDS
)。特定のクラス ( ) の先行クラスのチェーンを見つけようとしていますn
。次の Cypher クエリを使用しました。
start n=node(...)
match (n) -[:EXTENDS*]-> (m)
return m.className
クラスの直接の前任者n
が最初に来て、その前任者が2番目になるなどの順序でノードを処理する必要があります.Neo4jエンジンは正確にこの順序でノードを返すようです(上記のクエリを考えると)-これは私がすべきことですこの動作は、将来のリリースの一部で突然変更される可能性がありますか?
この動作に依存しない場合、Cypher クエリを使用すると、指定された順序ですべての先行ノードを取得できますか? 私は次のクエリについて考えていました:
start n=node(...)
match p = (n) -[:EXTENDS*]-> (m {className: 'Object'})
return p
Object
これは問題なく機能しますが、ルート クラス (この場合)を指定することは避けたいと思います。