OrientDB查询比较

OrientDB query compare

有以下疑问去OrientDB查询

我有三个顶点用户、事件和运动。

首先用户选择运动,然后创建 has_sport 边,用户 'out' 和运动 'in'。

并且有一些事件被其他用户注册如下,用户->事件->体育,用户创建边'out'和'in'事件和事件边'out'和'in'运动.

现在是如何查询的问题,我想查询returns用户根据他选择的运动项目的事件。也就是说,看user sports是否等于events sport。

顶点:用户、事件、运动 边:has_sport、has_event

Image graph

对不起我的英语不好嘿嘿

谢谢

编辑

    SELECT expand(event) FROM (
      MATCH 
        {class:users, as:user, where:(userId = ?)} -has_sport-> {as:sport},
        {class:events, as:event} -has_sport-> {as:sport},
        {as:user} -has_sport-> {as:sport}
    RETURN event
    )

希望这有效..

select out.name as sports, in('has_event').name as eventname from (select expand(out('has_sport')) from User where userid = 151)

请验证 "out" / "in" 逻辑。如果需要更改它。

可以考虑使用MATCH语句:

MATCH 
  {class:User, as:user, where:(userId = ?)} -has_event-> {as:event} -has_sport-> {as:sport},
  {as:user} -has_sport-> {as:sport}
RETURN event

这将 return 事件 RID。如果你想要扩展记录,你可以将它包装在 SELECT expand() 例如。

SELECT expand(event) FROM (
  MATCH...
)