Arangodb 在图形查询中的同一边缘集合上切换方向
我试图在arangodb周围找到自己的路,主要是对它的图形部分感兴趣。我试图理解的一件事是如何在同一个边集合上切换图遍历的方向。使用中的示例图,如何获得Joffrey的叔叔,例如,在Cypher中是什么(Joffrey)-[CHILDOF]->(parent)-[CHILDOF]->(祖父母)在AQL中,您不能更改在单个遍历中跟随一个和相同边集合的边的方向,但可以执行后续遍历 例如,您从Joffrey的父母到他的祖父母遍历2..2出站,然后从祖父母到父母的兄弟姐妹(Joffrey的叔叔和婶婶,或者给定示例数据集,而仅是他的叔叔Tyrion Lannister)遍历1..1入站 但要注意:Arangodb 在图形查询中的同一边缘集合上切换方向,arangodb,Arangodb,我试图在arangodb周围找到自己的路,主要是对它的图形部分感兴趣。我试图理解的一件事是如何在同一个边集合上切换图遍历的方向。使用中的示例图,如何获得Joffrey的叔叔,例如,在Cypher中是什么(Joffrey)-[CHILDOF]->(parent)-[CHILDOF]->(祖父母)在AQL中,您不能更改在单个遍历中跟随一个和相同边集合的边的方向,但可以执行后续遍历 例如,您从Joffrey的父母到他的祖父母遍历2..2出站,然后从祖父母到父母的兄弟姐妹(Joffrey的叔叔和婶婶,或
- 沿着他祖父母(这里只有泰温)的边缘往里走不仅会给你们提利昂,还会给你们他的父母詹姆和瑟曦
- 如果是单次遍历,默认选项“uniqueEdges:“path”将阻止Joffrey的父母返回,因为他们已经在通往Tywin的路上了
- 为了解决这个问题,我们可以确定父对象并在从Tywin开始的入站方向的遍历中过滤掉它们
- 另一个陷阱是乔弗里的父母是兄弟姐妹。为了在从Joffrey开始的2..2出站方向的遍历中不返回Tywin两次,我们可以使用遍历选项
(uniqueVertices:“global”,bfs:true
需要启用才能使用bfs
)uniqueVertices:“global”
LET joffrey = FIRST(
FOR c IN Characters
FILTER c.name == "Joffrey"
LIMIT 1
RETURN c
)
LET parents = (
FOR v IN OUTBOUND joffrey ChildOf
RETURN v
)
LET grandparents = (
FOR v IN 2..2 OUTBOUND joffrey ChildOf
OPTIONS {uniqueVertices: "global", bfs: true}
RETURN v
)
LET unclesAndAunts = (
FOR gp IN grandparents
FOR v IN INBOUND gp ChildOf
OPTIONS {uniqueVertices: "global", bfs: true} // needed?
FILTER v NOT IN parents
RETURN v
)
RETURN unclesAndAunts
数据集没有性别属性,因此你不能像过滤v not IN parents和v.gender==“male”那样过滤,只得到他的叔叔,但你明白了。你是说泰利昂·兰尼斯特的祖父是伯父吗?谢谢你的提问:我只是指伯父,例如提利昂。你的密码查询不会让祖父母的所有孩子(杰米、瑟曦和泰龙)都明白你想要得到什么。非常感谢你的详细解释!