gpt4 book ai didi

sql - OrientDB如何得到一组满足给定遍历路径的顶点和边?

转载 作者:行者123 更新时间:2023-12-01 10:36:37 25 4
gpt4 key购买 nike

鉴于下图,我想获取与名称为 'u0.p1.root.1' 的子节点相关的所有项目。

enter image description here

为了解决之前的请求,我可以运行这样的查询:

select from (
traverse out('rootSphere', 'children')
from (select from V where label = 'project') maxdepth 2
)
where name = 'u0.p0.root.1'

这给了我'u0.p1'

问题是我还想获取所有符合'u0.p1''u0.p1.root.1'之间路径的顶点和边>

如果我稍微修改查询以获取 $path

select $path from (
traverse out('rootSphere', 'children')
from (select from V where label = 'project') maxdepth 2
)
where name = 'u0.p0.root.1'

然后我得到

(#9:1030).out[0](#9:1031).out[1](#9:1033)

但我不知道如何处理它:-(

能否得到满足给定路径的顶点和边的集合?是否有更好的查询来解决这个问题?

提前致谢。

最佳答案

看起来你想从 u0.p1.root.1 开始反向工作,所以以下查询可能接近您想要的:

traverse inE('rootSphere', 'children'), outV() from (select from Circle where name='u0.p1.root.1');

(我已将名称“Circle”命名为您图中所有圆的类。)

当如图所示在图上运行时,上面的查询产生:

----+-----+----------+------------+-----------+-----+-----+-------------+--------------+-----------+--------------
# |@RID |@CLASS |name |in_children|out |in |in_rootSphere|out_children |in_projects|out_rootSphere
----+-----+----------+------------+-----------+-----+-----+-------------+--------------+-----------+--------------
0 |#11:3|Circle |u0.p1.root.1|[#15:3] |null |null |null |null |null |null
1 |#15:3|children |null |null |#11:2|#11:3|null |null |null |null
2 |#11:2|Circle |u0.p1.root |null |null |null |[#14:1] |[#15:2, #15:3]|null |null
3 |#14:1|rootSphere|null |null |#11:1|#11:2|null |null |null |null
4 |#11:1|Circle |u0.p1 |null |null |null |null |null |[size=1] |[#14:1]
----+-----+----------+------------+-----------+-----+-----+-------------+--------------+-----------+--------------

无论如何,您遇到的问题之一是 out() 将输出限制为顶点,而您需要节点和边。

您遇到的另一个问题是您对 MAXDEPTH 的使用。 OrientDB 文档对 MAXDEPTH 不是很清楚,所以考虑这个查询和结果:

traverse outE('rootSphere', 'children'), inV() from (select from V where name='u0.p1') maxdepth 3;

----+-----+----------+------------+-----------+--------------+-----+-----+-------------+--------------+-----------
# |@RID |@CLASS |name |in_projects|out_rootSphere|out |in |in_rootSphere|out_children |in_children
----+-----+----------+------------+-----------+--------------+-----+-----+-------------+--------------+-----------
0 |#11:1|Circle |u0.p1 |[size=1] |[#14:1] |null |null |null |null |null
1 |#14:1|rootSphere|null |null |null |#11:1|#11:2|null |null |null
2 |#11:2|Circle |u0.p1.root |null |null |null |null |[#14:1] |[#15:2, #15:3]|null
3 |#15:2|children |null |null |null |#11:2|#11:4|null |null |null
4 |#11:4|Circle |u0.p1.root.0|null |null |null |null |null |null |[#15:2]
5 |#15:3|children |null |null |null |#11:2|#11:3|null |null |null
6 |#11:3|Circle |u0.p1.root.1|null |null |null |null |null |null |[#15:3]
----+-----+----------+------------+-----------+--------------+-----+-----+-------------+--------------+-----------

此处必须将 MAXDEPTH 设置为 3 才能到达 child 。

关于sql - OrientDB如何得到一组满足给定遍历路径的顶点和边?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34315720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com