Am Mittwoch, 5. Dezember 2018 20:33:09 UTC+1 schrieb Petra Geigenfeind:
>
> Hello everybody,
>
> I've built a litte social network based on some characters from the 
> Simpsons. There's Lisa, Bart, Maggie, Homer, Marge and their grandparents 
> Abe and Jackie. I set up the characters as nodes in the graph, they have 
> tha class "figure", there a differnt types of edges for each kind of 
> relationship, in thes example it is the edge class "parent". Marge and 
> Homer are parents of Lisa, Bart and Maggie. Abe is the parent of Homer and 
> Jackie the parent of Marge. So all together we get a little family tree. 
>
> Now I want to find out who Lisa's grandparents are. So I'm matching Lisa 
> and two traversals of the parent type in reverse direction or if you want 
> so I'm looking for the parents of Lisa's parents. 
>
> Works fine using this syntax:
>
>     MATCH {class:figure, as: lisa, where: (name= "Lisa Simpson")}
>     .in("parent"){class: figure}
>     .in("parent"){class: figure, as: person}
>     RETURN person.name
>
> But now if I try with just one Edge definded and using the while condition 
> to loop traversals I get:
>
>     MATCH {class:figure, as: lisa, where: (name= "Lisa Simpson")}
>     .in("parent"){class: figure, as: person, while: ($matched.depth < 2), 
> where:(matched.depth != 0 AND $matched.depth != 1) }
>     RETURN person.name
>
> If I get it right how this works, Lisa is at depth level 0 as initial 
> node, her parents have to be at level 1 and her grandparents at level 2.
>
> The while condition seems to work like a do while loop. I figured this out 
> by quering Lisas parents using "$matched.depth < 1" and it still return 
> Lisa and her parents and not just Lisa. So $matched.depth < 2 should be 
> fine. 
>
> In the where clause I have to write "matched.depth != 0 AND $matched.depth 
> != 1" because it doesn't return anything if I write "$matched.depth == 2" 
> or "$matched.depth > 1" and I don't get why. Does anyone know why? 
>
> Also returning the depth of each ancestor using $depth in the return 
> statement doesn't work. It gets me a depth of 2 for all. Am I missing 
> anything or what is this behaviour?
>
> Another thing I still don't clearly get is the difference between matched 
> and currentMatch. Using matched.depth, currentMatch.depth or depth gets me 
> the same results. 
>

I'm using the current version of the community edition. Should be 3.0.6 

>
> Thank you!
>

-- 

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

Reply via email to