OrientDB 集合的平均值

OrientDB average over collection

我正在使用一些简单的应用程序尝试 orientdb。

在这个应用程序中,我有人物 (persona) 和吃饭的地方 (sitio),人们去那些地方(我存储他们去了多少次)并给他们打分。

使用此查询:

SELECT *, 
inE('puntua').comida as comida, 
inE('puntua').servicio as servicio, 
inE('puntua').extras as extras
from Sitio

我设法获得了所有分数的位置,但数组中的分数我无法应用 Avg() 函数。

Data Returned By Query

tldr;

我是不是误解了这种新的图形建模技术?或者有更好的方法来获得这些平均值?

GraphDB

已编辑

create class Puntua extends E

create class Sitio extends V

create class Persona extends V

create vertex Persona set name = 'person' # returns #17:0
create vertex Sitio set place = 'mcdonals' # returns #16:0
create vertex Sitio set place = 'burgerking'
create vertex Sitio set place = 'glicinia' # returns #16:2

create edge Puntua from 17:0 to 16:0 set comida = 8, servicio = 9, = extras = 7
create edge Puntua from 17:0 to 16:0 set comida = 8, servicio = 7, = extras = 9
create edge Puntua from 17:0 to 16:2 set comida = 8, servicio = 7, = extras = 9

如果以上是你的情况,我相信你正在寻找的查询是这样的:

SELECT *, myAvg(comida), myAvg(servicio), myAvg(extras) 
FROM (
   SELECT place, 
      inE('Puntua').comida as comida, 
      inE('Puntua').servicio as servicio, 
      inE('Puntua').extras as extras
   FROM Sitio
)

其中 myAvg 是一个 javascript 函数:

var graph = orient.getGraph();
var res = graph.command( "sql", "select avg(list) from (select " + list + " as list)");
if(res.length > 0){
    return res[0].getRecord().field('avg');
} else{
    return null;
}

喜欢here。 (注意列表参数)

输出为this