如何将扩展函数输出与 SQL 投影中的其他属性相结合 OrientDB.



我有两个类:Identity 和 User 从 User 到 Identity。我需要构造一个 SQL 查询,该查询将获取用户 RID 以及来自标识字段中的一些属性。例如,我的 Identity 类具有电子邮件地址、名字和姓氏属性。我的用户可以对标识记录具有多个传出边缘。但是,此语句无法按预期工作: SELECT expand(in()), emailAddress, firstName, lastName from Identity where email="abcd@temp.com" 上面的结果只是 expand(in()) 的输出我是否坚持进行两个单独的调用/查询,一个是从 Identity 获取道具,另一个是使用扩展函数?

你可以跳到边缘,然后你有一个输入/退出标识和用户引用,然后像这样进行投影

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

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

  • FROM 子句,指向边缘(位于用户和标识之间)
  • SELECT outV('User').property,指向启动节点用户,出到边缘
  • SELECT inV('Identity').property, point end node Identity, coming from edge

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

在 WHERE 子句中,您可以通过以 outV('User') 为前缀来搜索任何属性。 属性和/或 inV('Identity').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

最新更新