cancel
Showing results for 
Search instead for 
Did you mean: 

Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.

Exclude child node from result set

Hi All

can't figure out how to exclude child from result select , if both parent and child are selected using where clause .
parent is having incoming relationship from child and child/parent are same type of nodes .

MATCH (area:AREA)-[r1:CONTAINS]-> (p:Data)-[r2:CONTAINS]->(c:Values) optional MATCH (area:AREA)-[r3:CONTAINS*]->
(child:AREA) WITH area,p,child,collect(c) AS children WHERE ALL (c IN children WHERE c.y < 53 AND c.x >10)
return area,p,children,child

Test is selected only if the all values are in certain range . if the parent (AREA) is selected, Child area should be excluded , even if its values fall under same range.

Could you please suggest a solution?

thanks
sunil

3 REPLIES 3

Benoit_d
Graph Buddy
MATCH (area:AREA)-[r1:CONTAINS]-> (p:Data)-[r2:CONTAINS]->(c:Values) 
optional MATCH (area)-[r3:CONTAINS*]->(child:AREA) 
	WHERE c.y < 53 AND c.x >10
WITH area,p,child,collect(c) AS children 
return area,p,children,child

You seems to store values about an area as separate nodes. This is not a healthy design.

Cheers
Benoit

(Area)->(polygon)->(coordinate)

type of area are different example (polygon ,circle,point, etc) so we can't have value in area .

MATCH (area:AREA)-[r1:CONTAINS]-> (p:Circle)-[r2:CONTAINS]->(c:coordinates)
optional MATCH (area)-[r3:CONTAINS*]->(child:AREA) WHERE c.y < 53 AND c.x >10

need to select only circles fall inside range , so child area which contain inside parent one should be excluded .

Benoit_d
Graph Buddy

I presume you will have to compute first which shape is including/covering an other shape and define this way stable relations which you can query.
(a:Shape)-[:IS_COVERING]->(b:Shape)

I can't imagine you can compute and query at the same time.
(have a look at "A ROBUST ALGORITHM TO DETERMINE SURFACE/SURFACE
INTERSECTION IN BOTH PARAMETRIC SPACES " Teiseira/Creus)