我正在尝试使用一些简单的应用程序进行orientdb。
在这个应用程序中,我有人(角色)和吃饭的地方(sitio),人们去那些地方(我存储了多少次)并给他们打分。
使用此查询:
SELECT *,
inE('puntua').comida as comida,
inE('puntua').servicio as servicio,
inE('puntua').extras as extras
from Sitio
我设法得到所有地方的分数,但数组中的分数,我不能应用Avg()函数。
tldr;
我是否误解了这种新的Graph建模技术?还是有更好的方法来获得这些平均值?
答案 0 :(得分:0)
<强> EDITED 强>
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。