2

したがって、次のようなノードのリストがあるとします。

A -> B -> C -> D -> ...

このリストの先頭にノード F を追加したいと思います。このパターンを複雑にするために、このリストの任意のノードへの参照を「開始点」として与えることができ、そこから開始点を導き出す必要があります。たとえば、ノード「C」への参照が与えられ、A への参照を返すアルゴリズムを導出する必要があるとします。

これは、次のようなクエリで実行できるはずだと思います

    START n = node(*), a = node(*)
    MATCH a -[:LINKED*]> n
    WHERE n.id! = <ID>
    RETURN a

リレーションシップを長さで並べ替えることができれば、リレーションシップの最初のノードとして最も長いパスを使用し、思い通りに進むことができます。問題は、パスの長さで結果を並べ替える方法がわからないことです。私はそれが可能でなければならないと考えています.小さなクエリコマンドが欠けているだけです. テイカーはいますか?

-pYr0

4

2 に答える 2

10

長さは関数です: http://docs.neo4j.org/chunked/stable/query-functions-scalar.html#functions-length

START n = node(*), a = node(*)
MATCH p=a -[:LINKED*]-> n
WHERE n.id! = <ID>
RETURN a
ORDER BY length(p) desc
于 2013-07-03T04:40:11.730 に答える
1

リストの先頭が必要な場合は、候補ノードにつながるオプションの関係と照合することもできます。関係が存在しない場合は、そこにいます。

IDチェーン内のいくつかのノードを取得したと仮定します。

START n = node(<ID>)
MATCH () -[r?:LINKED]-> a -[:LINKED*]-> n
WHERE r = null
RETURN a
于 2013-07-03T15:38:36.927 に答える