Sql 使用图形按查询定向数据库组

Sql 使用图形按查询定向数据库组,sql,group-by,aggregate,orientdb,Sql,Group By,Aggregate,Orientdb,我需要在某个类的顶点属性上执行分组聚合,但是group by字段是距离当前节点两步远的顶点,我无法使其工作 我的情况是: 顶点A包含我要在其上聚合的属性,并且具有n个带有标签引用的顶点。如果某个顶点具有由边到顶点F定义的,则我要分组的顶点是这些顶点中的任何一个(B、C或D) 我认为可行的问题是: select sum(property), groupOn from ( select property, out('references')[out('definedBy').@rid = F

我需要在某个类的顶点属性上执行分组聚合,但是group by字段是距离当前节点两步远的顶点,我无法使其工作

我的情况是: 顶点A包含我要在其上聚合的属性,并且具有n个带有标签
引用的顶点。如果某个顶点具有由
边到顶点F定义的
,则我要分组的顶点是这些顶点中的任何一个(B、C或D)

我认为可行的问题是:

select sum(property), groupOn from (
    select property, out('references')[out('definedBy').@rid = F] as groupOn from AClass
) group by groupOn
但是它不起作用,内部语句给了我一个奇怪的响应,它不正确(没有返回顶点),我怀疑括号条件不支持
out()
(使用
@rid
的原因是我找到的文档声明只支持“=”

out('references')[out('definedBy')包含F]
也不起作用,它返回
$current
顶点的
out('definedBy')


有人知道如何做到这一点吗?在我的示例中,我想要的结果是一列中的属性和另一列中C顶点的@rid。然后我就可以快乐地按聚合执行我的组。

解决了它!在OrientDB2.1(我正在尝试rc4)中,有一个新的子句,名为
UNWIND
(参见文档中的)

使用“展开”,我可以做到:

SELECT sum(property), groupOn from (
  SELECT property, out('references') as groupOn
  FROM AClass
  UNWIND groupOn
) WHERE groupOn.out('definedBy')=F
GROUP BY groupOn
这可能是一个缓慢的函数,具体取决于AClass及其引用的顶点数量,如果发现任何性能问题,我会报告

SELECT sum(property), groupOn from (
  SELECT property, out('references') as groupOn
  FROM AClass
  UNWIND groupOn
) WHERE groupOn.out('definedBy')=F
GROUP BY groupOn