0

我有以下疑问要在 OrientDB 中查询。

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

首先,用户选择运动,然后创建 has_sport 边,用户为“out”,运动为“in”。

并且让其他用户注册的一些事件如下,用户->事件->体育,用户创建边缘“出”和“入”事件和事件边缘“出”和“入”运动。

现在是如何进行查询的问题,我想做一个查询,根据用户选择的运动将事件返回给用户。换句话说,看用户运动是否等于事件运动。

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

图像图

对不起我的英语不好嘿嘿

谢谢

编辑

    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
    )
4

2 回答 2

1

您可以考虑使用 MATCH 语句:

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

这将返回事件 RID。如果您想要扩展记录,可以将其包装在SELECT expand()例如。

SELECT expand(event) FROM (
  MATCH...
)
于 2017-03-17T08:33:20.413 回答
0

希望这有效..

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

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

于 2017-03-16T23:11:08.820 回答