0

私はneo4jが初めてです。私の要件では、ids(collect) のリストを取得し、同じクエリでノードを削除する必要があります。

以下のクエリでは、ID を返すだけで正しい結果が得られます。2 ID

START n=node:galleryid(galleryid='f0666ac5-9f61-4431-80b1-c9719ef8c1f9') 
MATCH n-[rels*1..]->p 
WITH n, rels, p, collect(p.photouniqueid) as photoids 
RETURN photoids;

期待どおりの結果が得られました:["3dcd792b-9eed-4a74-826a-6801c9f2b707"] ["e5c91a60-41cf-4afb-8aa6-49a4af00dd38"]

しかし、削除句をクエリに追加しようとすると、ID が 1 つしか取得されません。

START n=node:galleryid(galleryid='f0666ac5-9f61-4431-80b1-c9719ef8c1f9') 
MATCH n-[rels*1..]->p WITH n, rels, p, collect(p.photouniqueid) as photosid 
FOREACH(rel IN rels: DELETE rel) 
DELETE p 
WITH n, photosid 
MATCH n<-[r]-() 
DELETE n, r 
RETURN photosid;

Result - ["3dcd792b-9eed-4a74-826a-6801c9f2b707"]
==> 1 row
==> Nodes deleted: 3
==> Relationships deleted: 3

誰かが2番目のクエリの問題を提案できますか? 助けてくれてありがとう。

4

1 に答える 1

1

これを試して:

START n=node:galleryid(galleryid='f0666ac5-9f61-4431-80b1-c9719ef8c1f9') 
MATCH n-[rels*1..]->p 
WITH n, collect(path as paths) collect(p.photouniqueid) as photosid 
FOREACH(p IN paths: 
  FOREACH(r in rels(p) :  DELETE rel)
  FOREACH(x in tail(nodes(p)) : DELETE x)
)
WITH n, photosid
MATCH n<-[r]-() 
DELETE n, r 
RETURN photosid;

2 番目の一致でパスが見つからない場合は何も返されません

于 2013-11-10T06:26:13.700 に答える