yes sure :)

MATCH (a:Person{name:1})-->(b)-->(c)
with collect(DISTINCT b) as nodesDist1, c
MATCH (c)-->(d)
with nodesDist1, filter(n in collect(DISTINCT c) WHERE NOT n in nodesDist1)
as nodesDist2,collect(DISTINCT d) as nodesDist3
RETURN nodesDist1,nodeDist2,
                filter(n in nodesDist3 WHERE NOT (n in nodesDist1 OR n in
nodesDist2)) as nodesDist3

On Wed, Apr 13, 2016 at 6:21 PM, Kamilos <k19me...@gmail.com> wrote:

>
>
> Le mercredi 13 avril 2016 09:39:53 UTC+2, Michael Hunger a écrit :
>>
>> Try this:
>>
>> MATCH (a:Person{name:1})-->(b)-->(c)-->(d)
>> with collect(DISTINCT b) as nodesDist1, collect(DISTINCT c) as
>> nodesDist2,collect(DISTINCT d) as nodesDist3
>> RETURN nodesDist1,
>>                 filter(n in nodesDist2 WHERE NOT n in nodesDist1) as
>> nodesDist2,
>>                 filter(n in nodesDist3 WHERE NOT n in nodesDist1 OR n in
>> nodesDist2) as nodesDist3
>>
>
>
> Indeed,it's working well, I just had to replace the  "OR"  by "AND NOT"
>
>
> However, isn"t there a way to optimise this query ?
>
> Because, I have the impression that we are, for instance, collecting all
> the D nodes from all the C nodes and then doing a filtering on them.
>
> Wouldn"t it be better if we first filtered the C nodes to the relevant
> ones and then, starting from this reduced subset, looked for the D nodes ?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to neo4j+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to neo4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to