2017-02-22 10 views

答えて

2

REDUCE関数は単純に各アイテム最新の値を保持し、最後に最後の値を返す操作。

「任意の操作」の複雑さを無視すると、REDUCE関数の複雑さはO(N)です。ここで、Nはコレクションのサイズです。

+0

私はO(N)と仮定しましたが、より良いことを望んでいましたが、なぜそれが良いのか分かりません。 – SQLMason

+1

N個のアイテムを反復する複雑さは常にO(N)です。より速く何かを望むなら、あなたは '控除 'を使ってはいけません。 – cybersam

1

このクエリまず、あなたの開始と終了ノードを定義...と、それらの間のすべてのパスと一致し

START startNode=node:node_auto_index(name="Start"), 
      endNode=node:node_auto_index(name="Finish") 
MATCH p=(startNode)-[:NAVIGATE_TO*]->(endNode) 
RETURN p AS shortestPath, 
       reduce(distance=0, r in relationships(p) : distance+r.distance) AS totalDistance 
ORDER BY totalDistance ASC 
LIMIT 1; 

を参照している場合は...このような

RETURN p AS shortestPath, 
reduce(distance=0, r in relationships(p) : distance+r.distance) AS totalDistance 
ORDER BY totalDistance ASC 
LIMIT 1; 

このreduce作品パスの関係からすべての距離プロパティを抽出し、それらを合計します。したがって、order byの結果が距離で上がり、limitが1になると、最初の最小距離だけが得られます。

p.s.私はあなたが参照している大きなOはゼロから0までのすべてのパスを開始し、すべての距離を加算するようになると思います。