2016-05-13 6 views
3

に平坦化されるように、このクエリは動作します:サブクエリの結果は二つの別々のアレイ

FOR person IN 1..1 INBOUND @companyID employed_by 
    LET age = DATE_DIFF(person.age * 1000, @currentTime * 1000, 'y') 
    COLLECT label = age WITH COUNT INTO value 
     RETURN {data: label, frequency: value} 

を、私にこれを与える:

[ 
    { 
     data: 18, 
     frequency: 69 
    }, 
    { 
     data: 19, 
     frequency: 73 
    }, 
    { 
     data: 20, 
     frequency: 86 
    } 
] 

しかし、私が本当にしたいことは、この

ようなものです

私は次のクエリが動作することを期待していましたが、PUSH文が失敗しました(構文エラー)、私はP私は絶対に精神

LET data = [] 
LET frequency = [] 
LET temp = 
     (
      FOR person IN 1..1 INBOUND @companyID employed_by 
       LET age = DATE_DIFF(person.age * 1000, @currentTime * 1000, 'y') 
       COLLECT label = age WITH COUNT INTO value 
        data = PUSH(data, label) 
        frequency = PUSH(frequency, value) 
        RETURN true 
     ) 
RETURN {data: data, frequency: frequency} 

何かをやっている暗示するUSHループFOR内のステートメントが、私は期待してそれらを動作させることはできませんが、何かアドバイスは素晴らしいことです!

+0

あなたは、賞賛をそれを考え出しました! PUSHに関する注記:要素を追加することはできますが、既存の変数を再定義することはできません。試したのは変数 'data'と' frequency'(複数回)を変更することです。副作用なし)。 AQLは完全なプログラミング言語ではなく、これは意図的なものです.AQLの本質的な制限のために、クエリを多く最適化することができます。サブクエリを使用して、通常は純粋なAQLソリューションがあります。 – CoDEmanX

+0

あなたの問題への回答が既に見つかっているので、あなたの答えに合格とマークすることはできますか? ;-) – dothebart

答えて

3

そして、いくつかのより多くのあいた後 - これは私が必要な正確に何のようだ:

LET temp = 
    (
     FOR person IN 1..1 INBOUND @companyID employed_by 
      LET age = DATE_DIFF(person.age * 1000, @currentTime * 1000, 'y') 
      COLLECT label = age WITH COUNT INTO value 
       RETURN {data: label, frequency: value} 
    ) 
RETURN {data: temp[*].data, frequency: temp[*].frequency} 
関連する問題