1

Neo4j Spatial プラグインを使用しています。

この基本的なクエリを考えてみましょう:

START c = node:carslocation('withinDistance:[2.3725963,48.892067, 34.0]') 
RETURN c

34 km 以内のすべての車を返します。

(ラベルを使用して)レースカーのみを取得したい場合はどうすればよいでしょうか。

Spatial がなければ、次のようにします。

MATCH (c:Race)
RETURN c 

34km 以内にすべてのレースカーが必要な場合は、次のようになります。

START c = node:carslocation('withinDistance:[2.3725963,48.892067, 34.0]') 
MATCH (c:Race)
RETURN c

=> Cannot add labels or properties on a node which is already bound.
確かにc、最初の行ですでにバインドされていました。

私はこれをする必要はありません:

START c = node:carslocation('withinDistance:[2.3725963,48.892067, 34.0]') 
MATCH (cr:Race)
WHERE cr.id = c.id
RETURN cr

等しいかどうかを確認するために、すべてのノードを開く必要があります... => 特にクエリがより複雑になると、パフォーマンスが低下します (id がインデックス化されている場合でも)。

効率的な解決策は何ですか?

アップデート - - - - - - - - - -

おそらく、ノードのみを比較する方が効率的です。

START c = node:carslocation('withinDistance:[2.3725963,48.892067, 34.0]') 
MATCH (cr:Race)
WHERE cr = c
RETURN cr

それは...ですか?

4

1 に答える 1