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.
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 [email protected].
For more options, visit https://groups.google.com/d/optout.