ORIENTDB在sql查询中自定义Order By

时间:2016-06-22 09:41:05

标签: orientdb

好吧,我在这个格式中得到了这些索引,如字符串中的10.9.8.1。

我想按顺序排列带有SQL查询的记录,最重要的是int。

像:

1

1.3

1.3.1

1.3.4

1.3.5

7.8

10.4.5

10.5

11.3

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用带有参数" yourProperty"的javascrip函数。像这样:

var g=orient.getGraph();
var result=[];
var list=[];
var b=g.command("sql","select from v");
for(i=0;i<b.length;i++){
        var record=b[i];
        var index=record.getProperty(yourProperty);
        index+="."+record.getId().toString();
        var vector=index.split('.');
        list.push(vector);
}

list.sort(function (a, b) {
    var dim1=a.length-1;
    var dim2=b.length-1;
    for(j=0;j<dim1;j++){  
        var value1=parseInt(a[j]);
        if(j<dim2){   
            var value2=parseInt(b[j]);
            if(value1>value2)
                return 1;
            else if (value1<value2)
                return -1;
        }
    }
    if(dim1>dim2)
        return 1;
    else
        return -1;
});

for(m=0;m<list.length;m++){ 
  var element=list[m];
  var id=element[element.length-1];
  for(h=0;h<b.length;h++){
    var id2=b[h].getId().toString();
        if(id==id2){
            result.push(b[h]);
            break;
        }
    }
}

return result;

enter image description here

希望它有所帮助。