What about this approach ?

          WITH 'A' as name 
          MATCH p=((n:Root)-[:CHILD*]->(m {name:name})) 
          WHERE SINGLE(n in TAIL(nodes(p)) WHERE n.name=name) 
          RETURN m

which wil return only the first node with name=‘A’  , if any.

> On 27 Dec 2016, at 11:58, Behrang Saeedzadeh <[email protected]> wrote:
> 
> This might work, but my dataset has about 2m nodes and it is very slow as it 
> results a cartesian join:
> 
> MATCH (n), (p)
> WHERE
>  n.name = 'A' AND
>  p.name = 'A' AND
>  NOT (p)-->(n)
> RETURN n
> 
> 
> On Tuesday, December 27, 2016 at 9:52:08 PM UTC+11, Behrang Saeedzadeh wrote:
> Hi Benoit,
> 
> A is the value of the name property for the nodes. So the query is more like 
> this:
> 
> MATCH (n)
> WHERE
>  size ((m)-->(n)) = 0
>  AND m.name <http://m.name/> = 'A'
>  AND n.name <http://n.name/> = 'A'
> RETURN n
> 
> However this won't work because I don't have m in the MATCH clause:
> 
> Variable `m` not defined (line 3, column 9 (offset: 24))
> " size ((m)-->(n)) = 0"
>          ^
> 
> 
> 
> On Saturday, December 24, 2016 at 9:33:47 PM UTC+11, Benoît Simard wrote:
> Something like that ?
> 
> MATCH (n:A)
> WHERE 
>   size((:A)-->(n)) = 0 AND
>  exists((:Root)-[*]->(n))
> RETURN n
> 
> 
> 
> 2016-12-24 10:40 GMT+01:00 Behrang Saeedzadeh <[email protected] <>>:
> Let's pretend we have a tree like this in which each node is labeled with the 
> name property:
> 
> ROOT
> |
> \---> X --> A --> Y --> A --> Z
> |
> |
> \---> A --> A
> |
> |
> \---> A
> 
> I want to return all the nodes named A that don't have an ancestor that is 
> also named A. In other words, only the A nodes that are in bold and are 
> underlined.
> 
> What Cypher query can return these nodes? 
> 
> Thanks in advance.
> 
> -- 
> 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 [email protected] <>.
> For more options, visit https://groups.google.com/d/optout 
> <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 [email protected] 
> <mailto:[email protected]>.
> For more options, visit https://groups.google.com/d/optout 
> <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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to