2016-05-13 78 views
3

此查詢的工作:更改AQL,這樣子查詢結果壓扁成兩個單獨的陣列

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 
    } 
] 

但我真正想要的是像這樣

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

我期待着下面的查詢工作 - 但PUSH語句失敗(語法錯誤),我試了一堆P在FOR循環,但不能讓他們如我所料工作USH報表,這將意味着我正在做的事情絕對精神

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} 

任何意見將是巨大的!

+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} 
相關問題