orientDB 查询中的 $parent 和 $current
$parent and $ current in orientDB query
我在 orientDB 文档中阅读了它,但无法掌握它。
如果有人可以详细解释 $parent 和 $current 的用法,那就太好了。
在几个例子中,我尝试了 $parent.$parent.$current 和 $parent.$current,它们都给出了我认为不应该发生的相同结果。以下是我的假设:
- $current 可以访问当前正在处理的 record/node
- $parent 可以访问当前正在处理的 record/node 的父对象
你的第二个假设是错误的。它使您可以访问父查询的变量(在子查询中调用遍历时很有用 here)。
一个例子:
create class User extends V
create class Follows extends E
create vertex User set name = 'u1'
create vertex User set name = 'u2'
create vertex User set name = 'u3'
create edge Follows from (select from User where name = 'u1') to (select from User where name = 'u2')
create edge Follows from (select from User where name = 'u2') to (select from User where name = 'u3')
select $all from User
let $all = ( traverse out('Follows') from $parent.$current)
我在 orientDB 文档中阅读了它,但无法掌握它。 如果有人可以详细解释 $parent 和 $current 的用法,那就太好了。 在几个例子中,我尝试了 $parent.$parent.$current 和 $parent.$current,它们都给出了我认为不应该发生的相同结果。以下是我的假设:
- $current 可以访问当前正在处理的 record/node
- $parent 可以访问当前正在处理的 record/node 的父对象
你的第二个假设是错误的。它使您可以访问父查询的变量(在子查询中调用遍历时很有用 here)。
一个例子:
create class User extends V
create class Follows extends E
create vertex User set name = 'u1'
create vertex User set name = 'u2'
create vertex User set name = 'u3'
create edge Follows from (select from User where name = 'u1') to (select from User where name = 'u2')
create edge Follows from (select from User where name = 'u2') to (select from User where name = 'u3')
select $all from User
let $all = ( traverse out('Follows') from $parent.$current)