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...
)
有以下疑问去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...
)