如何将扩展函数输出与SQL Projection for OrientDB中的其他属性组合使用?

时间:2014-12-15 21:25:31

标签: orientdb

我有两个类:Identity和User,边缘从User到Identity。我需要构造一个SQL查询,它将获取User RID以及Identity字段中的一些属性。 例如,我的Identity类具有emailAddress,firstName和lastName属性。我的用户可以有多个传出边缘来识别记录。 但是,此声明无法按预期工作: SELECT expand(in()), emailAddress, firstName, lastName from Identity where email="abcd@temp.com" 上面的结果只是expand的输出(in()) 我是不是要做两个单独的调用/查询,一个是从Identity获取道具,另一个是使用扩展功能?

2 个答案:

答案 0 :(得分:4)

你可以跳到边缘然后你进入/退出身份和用户参考,然后进行这样的投影

select  out.emailAddress, out.firstName, out.lastName from (SELECT expand(inE()) from Identity where email="abcd@temp.com")

答案 1 :(得分:1)

作为替代方案,此select语句允许您从User和Identity中选择属性。

  • FROM子句,指向边缘(位于用户和身份之间)
  • SELECT outV(' User')。property,指向start-node User,out to edge
  • SELECT inV(' Identity'。)。属性,点结束节点Identity,从边缘进入

在SELECT子句中,您可以通过在 outV('用户')。属性和/或 inV(' Identity&#)前面添加前缀来获取任何属性39。) .property

在WHERE子句中,您可以在任何属性上搜索前缀 outV('用户')。属性和/或 inV('身份& #39;) .property

SELECT 
outV('User').firstName as name,
inV('Identity').email as email, 
somePropertyFromEdgeName as prop
FROM EdgeName //name of the edge between User and Identity
WHERE outV('User').firstName = 'John'
or inV(Identity').email = '...' 
// etc....
ORDER BY email asc, prop desc