2016-10-05 8 views
0

最近Neo4jデータベースをv.3(3.0.6)にアップグレードしました。それ以来、私はCypherでノードを削除しようとすると問題を抱えています。これはアップグレード以降の新しい問題です。彼らサイファークエリは次のとおりです。ID NO31をロードできません

MATCH (p) WHERE id(p) = 83624 
OPTIONAL MATCH (p)-[r]-(n) 
OPTIONAL MATCH (p)-[r2]-(n2) 
WHERE NOT ('Entity' in labels(n2)) 
DELETE r, r2, p, n2 

これが今エラーUnable to load NODE with id 83624

RETURN代わりDELETEのリターンノードとの正確なクエリになります。私はまた、ノードのDETACH DELETEDELETEを交換しようとしましたが、それは私に同じエラーを与えます。

この問題は、解決策が出る前に尋ねられたようですが、解決策がないようです。このエラーの原因は何ですか?

答えて

0

このクエリで少し混乱します。任意のマッチは、pに接続されている任意のノードとの任意の関係に一致するという点で同一です。その後、エンティティ(だけでなく、それらを接続する関係)ではありません任意の接続ノードと一緒に、そのノードを削除し、IDによってノードを検索:

は、私はあなたが何をしようとして理解してくださいしてみましょう。そうですか?

もしそうなら、このクエリは、より良い仕事かもしれません:ノードを取り外し

MATCH (p) WHERE id(p) = 83624 
OPTIONAL MATCH (p)--(n) 
WHERE NOT n:Entity 
DETACH DELETE n 
DETACH DELETE p 

は、そのノードに接続されているすべての関係を削除し、あなただけのゼロ関係を持つノードを削除することができます。また

は、ちょうどそれが一意のノードを識別するための内部IDを使用することをお勧めしません、注意します。独自の一意のIDを代わりに使用し、そのラベルのそのプロパティに固有の制約を作成することをお勧めします。

+0

ガード、私はそれも分かりました。問合せは、手動で関係を削除する必要があるときに、「DETACH DELETE」の日より前に行われました。すべての関係を取得していくつかのノードを残す2つの節です。とにかくこれは動作します。私は助けに感謝します。 –

関連する問題