2016-06-22 5 views
0

このような形式のインデックスは、10.9.8.1のように文字列で取得できます。ORIENTDBはSQLクエリでOrder Byをカスタマイズします

SQLのクエリを使用して、レコードを最も重要なintの順に並べ替える必要があります。

等:

1.3

1.3.1

1.3.4

1.3.5

7.8

これを達成することができますどのよう10.4.5

10.5

11.3

+0

並べ替えの対象とするフィールドは文字列ですか? –

+0

はい、文字列です。 –

+0

こんにちは@AlbertoAndelieroそれはjs関数に役立つことができますか? –

答えて

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

はそれがお役に立てば幸いです。

+0

でドキュメントを選択してください非常にありがとうございます! –