OrientDB遍历功能
我要选择连接到另一个顶点的所有顶点。我目前正在OrientDB中使用遍历函数。考虑下面的例子:OrientDB遍历功能,orientdb,Orientdb,我要选择连接到另一个顶点的所有顶点。我目前正在OrientDB中使用遍历函数。考虑下面的例子: > create class professor extends V > create class course extends V > insert into professor set name='Smith' Inserted record 'professor#14:0{name:Smith} v1' > insert into course set name='Ca
> create class professor extends V
> create class course extends V
> insert into professor set name='Smith'
Inserted record 'professor#14:0{name:Smith} v1'
> insert into course set name='Calculus'
Inserted record 'course#15:0{name:Calculus} v1'
> create class teaches extends E
> create edge teaches from #14:0 to #15:0
Created edge '[teaches#16:0{out:#14:0,in:#15:0} v3]'
现在,当我尝试遍历查找史密斯教授教授教授的课程时,我使用以下命令:
> traverse out_teaches from #15:0
----+-----+---------+-----+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out |in
----+-----+---------+-----+-----------+-----+-----
0 |#14:0|professor|Smith|[size=1] |null |null
1 |#16:0|teaches |null |null |#14:0|#15:0
----+-----+---------+-----+-----------+-----+-----
为什么这会返回给我边,而不是我正在寻找的顶点路线?将顶点返回给我的适当命令是什么?我希望返回“演算”的记录。您的查询对我来说运行良好 在我的例子中,教授的rid为11:0,课程为12:0,教师为13:0 只需再次运行查询或尝试以下操作:
从12:0开始遍历两个“教师”您的查询对我来说很好 在我的例子中,教授的rid为11:0,课程为12:0,教师为13:0 只需再次运行查询或尝试以下操作:
从12:0开始遍历两个“教师”您的查询对我来说很好 在我的例子中,教授的rid为11:0,课程为12:0,教师为13:0 只需再次运行查询或尝试以下操作:
从12:0开始遍历两个“教师”您的查询对我来说很好 在我的例子中,教授的rid为11:0,课程为12:0,教师为13:0 只需再次运行查询或尝试以下操作:
从12:0开始遍历两个'teachs'至少在OrientDB 2.1中选择课程的正确语法将基于out'teachs'。例如:
> select expand(out('teaches')) from (select from Professor where name='Smith')
----+-----+------+--------+----------
# |@RID |@CLASS|name |in_teaches
----+-----+------+--------+----------
0 |#12:0|Course|Calculus|[size=1]
----+-----+------+--------+----------
也就是说,正如预期的那样,只有一个顶点
请注意,“导线测量”用于不同的目的。它涉及一个遍历图的迭代过程
外教
out是对边的引用。使用OrientDB 2.1.7,我为您的out\u查询获得的响应如下:
> select expand(out_teaches) from (select from Professor where name='Smith')
----+-----+-------+-----+-----
# |@RID |@CLASS |out |in
----+-----+-------+-----+-----
0 |#13:0|teaches|#11:0|#12:0
----+-----+-------+-----+-----
同样,这也是我们所期望的——优势。至少在OrientDB 2.1中,选择课程的正确语法将基于“教师”之外的内容。例如:
> select expand(out('teaches')) from (select from Professor where name='Smith')
----+-----+------+--------+----------
# |@RID |@CLASS|name |in_teaches
----+-----+------+--------+----------
0 |#12:0|Course|Calculus|[size=1]
----+-----+------+--------+----------
也就是说,正如预期的那样,只有一个顶点
请注意,“导线测量”用于不同的目的。它涉及一个遍历图的迭代过程
外教
out是对边的引用。使用OrientDB 2.1.7,我为您的out\u查询获得的响应如下:
> select expand(out_teaches) from (select from Professor where name='Smith')
----+-----+-------+-----+-----
# |@RID |@CLASS |out |in
----+-----+-------+-----+-----
0 |#13:0|teaches|#11:0|#12:0
----+-----+-------+-----+-----
同样,这也是我们所期望的——优势。至少在OrientDB 2.1中,选择课程的正确语法将基于“教师”之外的内容。例如:
> select expand(out('teaches')) from (select from Professor where name='Smith')
----+-----+------+--------+----------
# |@RID |@CLASS|name |in_teaches
----+-----+------+--------+----------
0 |#12:0|Course|Calculus|[size=1]
----+-----+------+--------+----------
也就是说,正如预期的那样,只有一个顶点
请注意,“导线测量”用于不同的目的。它涉及一个遍历图的迭代过程
外教
out是对边的引用。使用OrientDB 2.1.7,我为您的out\u查询获得的响应如下:
> select expand(out_teaches) from (select from Professor where name='Smith')
----+-----+-------+-----+-----
# |@RID |@CLASS |out |in
----+-----+-------+-----+-----
0 |#13:0|teaches|#11:0|#12:0
----+-----+-------+-----+-----
同样,这也是我们所期望的——优势。至少在OrientDB 2.1中,选择课程的正确语法将基于“教师”之外的内容。例如:
> select expand(out('teaches')) from (select from Professor where name='Smith')
----+-----+------+--------+----------
# |@RID |@CLASS|name |in_teaches
----+-----+------+--------+----------
0 |#12:0|Course|Calculus|[size=1]
----+-----+------+--------+----------
也就是说,正如预期的那样,只有一个顶点
请注意,“导线测量”用于不同的目的。它涉及一个遍历图的迭代过程
外教
out是对边的引用。使用OrientDB 2.1.7,我为您的out\u查询获得的响应如下:
> select expand(out_teaches) from (select from Professor where name='Smith')
----+-----+-------+-----+-----
# |@RID |@CLASS |out |in
----+-----+-------+-----+-----
0 |#13:0|teaches|#11:0|#12:0
----+-----+-------+-----+-----
同样,这是人们所期望的——一条边。我稍微扩展了一下您的图形以尝试您的查询 如果您只想知道通过边“教导”连接到某个起始顶点的连接顶点,则应使用“选择展开/插入/两者”,因为如果您希望在不同深度探索图形,则“遍历”更为有用。在我的案例中,Smith有@rid 11:0: 从select from Professor where name='Smith'中选择expandout'teachs' 或者从11:0选择expandout“教学”,您将获得相同的结果:
----+-----+------+------------+----------+----------
# |@RID |@CLASS|name |in_teaches|in_follows
----+-----+------+------------+----------+----------
0 |#12:0|course|Calculus |[size=1] |[size=1]
1 |#12:1|course|Astrophysics|[size=1] |[size=1]
2 |#12:2|course|Law |[size=2] |[size=1]
----+-----+------+------------+----------+----------
或者您可以获得Smith教授的所有连接顶点
select expand(out()) from professor where name="Smith"
----+-----+----------+------------+----------+----------+------------+----------
# |@RID |@CLASS |name |in_teaches|in_follows|in_studiesAt|in_worksAt
----+-----+----------+------------+----------+----------+------------+----------
0 |#12:0|course |Calculus |[size=1] |[size=1] |null |null
1 |#12:1|course |Astrophysics|[size=1] |[size=1] |null |null
2 |#12:2|course |Law |[size=2] |[size=1] |null |null
3 |#16:0|university|Cambridge |null |null |[size=1] |[size=1]
----+-----+----------+------------+----------+----------+------------+----------
您的查询“从11:0开始遍历”似乎列出了起始顶点以及具有相对进出顶点的所有连接边:
----+-----+---------+-----+-----------+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out_worksAt|out |in
----+-----+---------+-----+-----------+-----------+-----+-----
0 |#11:0|professor|Smith|[size=3] |[size=1] |null |null
1 |#13:0|teaches |null |null |null |#11:0|#12:0
2 |#13:1|teaches |null |null |null |#11:0|#12:1
3 |#13:2|teaches |null |null |null |#11:0|#12:2
----+-----+---------+-----+-----------+-----------+-----+-----
我还尝试从professor中遍历_teachs,结果与前面的查询类似:
----+-----+---------+-----+-----------+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out_worksAt|out |in
----+-----+---------+-----+-----------+-----------+-----+-----
0 |#11:0|professor|Smith|[size=3] |[size=1] |null |null
1 |#13:0|teaches |null |null |null |#11:0|#12:0
2 |#13:1|teaches |null |null |null |#11:0|#12:1
3 |#13:2|teaches |null |null |null |#11:0|#12:2
4 |#11:1|professor|Green|[size=1] |[size=1] |null |null
5 |#13:3|teaches |null |null |null |#11:1|#12:2
----+-----+---------+-----+-----------+-----------+-----+-----
我稍微扩展了一下您的图表以尝试您的查询 如果您只想知道通过边“教导”连接到某个起始顶点的连接顶点,则应使用“选择展开/插入/两者”,因为如果您希望在不同深度探索图形,则“遍历”更为有用。在我的案例中,Smith有@rid 11:0: 从select from Professor where name='Smith'中选择expandout'teachs' 或者从11:0选择expandout“教学”,您将获得相同的结果:
----+-----+------+------------+----------+----------
# |@RID |@CLASS|name |in_teaches|in_follows
----+-----+------+------------+----------+----------
0 |#12:0|course|Calculus |[size=1] |[size=1]
1 |#12:1|course|Astrophysics|[size=1] |[size=1]
2 |#12:2|course|Law |[size=2] |[size=1]
----+-----+------+------------+----------+----------
或者您可以获得Smith教授的所有连接顶点
select expand(out()) from professor where name="Smith"
----+-----+----------+------------+----------+----------+------------+----------
# |@RID |@CLASS |name |in_teaches|in_follows|in_studiesAt|in_worksAt
----+-----+----------+------------+----------+----------+------------+----------
0 |#12:0|course |Calculus |[size=1] |[size=1] |null |null
1 |#12:1|course |Astrophysics|[size=1] |[size=1] |null |null
2 |#12:2|course |Law |[size=2] |[size=1] |null |null
3 |#16:0|university|Cambridge |null |null |[size=1] |[size=1]
----+-----+----------+------------+----------+----------+------------+----------
您的查询“从11:0开始遍历”似乎列出了起始顶点以及具有相对进出顶点的所有连接边:
----+-----+---------+-----+-----------+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out_worksAt|out |in
----+-----+---------+-----+-----------+-----------+-----+-----
0 |#11:0|professor|Smith|[size=3] |[size=1] |null |null
1 |#13:0|teaches |null |null |null |#11:0|#12:0
2 |#13:1|teaches |null |null |null |#11:0|#12:1
3 |#13:2|teaches |null |null |null |#11:0|#12:2
----+-----+---------+-----+-----------+-----------+-----+-----
我也试过了
ut_教授授课,结果与前面的查询类似:
----+-----+---------+-----+-----------+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out_worksAt|out |in
----+-----+---------+-----+-----------+-----------+-----+-----
0 |#11:0|professor|Smith|[size=3] |[size=1] |null |null
1 |#13:0|teaches |null |null |null |#11:0|#12:0
2 |#13:1|teaches |null |null |null |#11:0|#12:1
3 |#13:2|teaches |null |null |null |#11:0|#12:2
4 |#11:1|professor|Green|[size=1] |[size=1] |null |null
5 |#13:3|teaches |null |null |null |#11:1|#12:2
----+-----+---------+-----+-----------+-----------+-----+-----
我稍微扩展了一下您的图表以尝试您的查询 如果您只想知道通过边“教导”连接到某个起始顶点的连接顶点,则应使用“选择展开/插入/两者”,因为如果您希望在不同深度探索图形,则“遍历”更为有用。在我的案例中,Smith有@rid 11:0: 从select from Professor where name='Smith'中选择expandout'teachs' 或者从11:0选择expandout“教学”,您将获得相同的结果:
----+-----+------+------------+----------+----------
# |@RID |@CLASS|name |in_teaches|in_follows
----+-----+------+------------+----------+----------
0 |#12:0|course|Calculus |[size=1] |[size=1]
1 |#12:1|course|Astrophysics|[size=1] |[size=1]
2 |#12:2|course|Law |[size=2] |[size=1]
----+-----+------+------------+----------+----------
或者您可以获得Smith教授的所有连接顶点
select expand(out()) from professor where name="Smith"
----+-----+----------+------------+----------+----------+------------+----------
# |@RID |@CLASS |name |in_teaches|in_follows|in_studiesAt|in_worksAt
----+-----+----------+------------+----------+----------+------------+----------
0 |#12:0|course |Calculus |[size=1] |[size=1] |null |null
1 |#12:1|course |Astrophysics|[size=1] |[size=1] |null |null
2 |#12:2|course |Law |[size=2] |[size=1] |null |null
3 |#16:0|university|Cambridge |null |null |[size=1] |[size=1]
----+-----+----------+------------+----------+----------+------------+----------
您的查询“从11:0开始遍历”似乎列出了起始顶点以及具有相对进出顶点的所有连接边:
----+-----+---------+-----+-----------+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out_worksAt|out |in
----+-----+---------+-----+-----------+-----------+-----+-----
0 |#11:0|professor|Smith|[size=3] |[size=1] |null |null
1 |#13:0|teaches |null |null |null |#11:0|#12:0
2 |#13:1|teaches |null |null |null |#11:0|#12:1
3 |#13:2|teaches |null |null |null |#11:0|#12:2
----+-----+---------+-----+-----------+-----------+-----+-----
我还尝试从professor中遍历_teachs,结果与前面的查询类似:
----+-----+---------+-----+-----------+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out_worksAt|out |in
----+-----+---------+-----+-----------+-----------+-----+-----
0 |#11:0|professor|Smith|[size=3] |[size=1] |null |null
1 |#13:0|teaches |null |null |null |#11:0|#12:0
2 |#13:1|teaches |null |null |null |#11:0|#12:1
3 |#13:2|teaches |null |null |null |#11:0|#12:2
4 |#11:1|professor|Green|[size=1] |[size=1] |null |null
5 |#13:3|teaches |null |null |null |#11:1|#12:2
----+-----+---------+-----+-----------+-----------+-----+-----
我稍微扩展了一下您的图表以尝试您的查询 如果您只想知道通过边“教导”连接到某个起始顶点的连接顶点,则应使用“选择展开/插入/两者”,因为如果您希望在不同深度探索图形,则“遍历”更为有用。在我的案例中,Smith有@rid 11:0: 从select from Professor where name='Smith'中选择expandout'teachs' 或者从11:0选择expandout“教学”,您将获得相同的结果:
----+-----+------+------------+----------+----------
# |@RID |@CLASS|name |in_teaches|in_follows
----+-----+------+------------+----------+----------
0 |#12:0|course|Calculus |[size=1] |[size=1]
1 |#12:1|course|Astrophysics|[size=1] |[size=1]
2 |#12:2|course|Law |[size=2] |[size=1]
----+-----+------+------------+----------+----------
或者您可以获得Smith教授的所有连接顶点
select expand(out()) from professor where name="Smith"
----+-----+----------+------------+----------+----------+------------+----------
# |@RID |@CLASS |name |in_teaches|in_follows|in_studiesAt|in_worksAt
----+-----+----------+------------+----------+----------+------------+----------
0 |#12:0|course |Calculus |[size=1] |[size=1] |null |null
1 |#12:1|course |Astrophysics|[size=1] |[size=1] |null |null
2 |#12:2|course |Law |[size=2] |[size=1] |null |null
3 |#16:0|university|Cambridge |null |null |[size=1] |[size=1]
----+-----+----------+------------+----------+----------+------------+----------
您的查询“从11:0开始遍历”似乎列出了起始顶点以及具有相对进出顶点的所有连接边:
----+-----+---------+-----+-----------+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out_worksAt|out |in
----+-----+---------+-----+-----------+-----------+-----+-----
0 |#11:0|professor|Smith|[size=3] |[size=1] |null |null
1 |#13:0|teaches |null |null |null |#11:0|#12:0
2 |#13:1|teaches |null |null |null |#11:0|#12:1
3 |#13:2|teaches |null |null |null |#11:0|#12:2
----+-----+---------+-----+-----------+-----------+-----+-----
我还尝试从professor中遍历_teachs,结果与前面的查询类似:
----+-----+---------+-----+-----------+-----------+-----+-----
# |@RID |@CLASS |name |out_teaches|out_worksAt|out |in
----+-----+---------+-----+-----------+-----------+-----+-----
0 |#11:0|professor|Smith|[size=3] |[size=1] |null |null
1 |#13:0|teaches |null |null |null |#11:0|#12:0
2 |#13:1|teaches |null |null |null |#11:0|#12:1
3 |#13:2|teaches |null |null |null |#11:0|#12:2
4 |#11:1|professor|Green|[size=1] |[size=1] |null |null
5 |#13:3|teaches |null |null |null |#11:1|#12:2
----+-----+---------+-----+-----------+-----------+-----+-----
从15:0开始,特拉弗斯的两位“老师”都会把课程和教授还给我。我重新运行了上一个查询,但仍然得到相同的结果。我想知道答案。谢谢你,从15:0开始,两位老师都会把课程和教授还给我。我重新运行了上一个查询,但仍然得到相同的结果。我想知道答案。谢谢你,从15:0开始,两位老师都会把课程和教授还给我。我重新运行了上一个查询,但仍然得到相同的结果。我想知道答案。谢谢你,从15:0开始,两位老师都会把课程和教授还给我。我重新运行了上一个查询,但仍然得到相同的结果。我想知道答案。非常感谢。