Этот запрос работает:Изменение 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 USH заявление в FOR петель, но не может заставить их работать, как я ожидал, предполагающее бы я делаю что-то абсолютно умственного
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}
Любой совет будет здорово!
Вы догадались, престижность! Замечание к PUSH: оно позволяет добавлять элемент, но вы не можете переопределить существующую переменную - вы пытались изменить переменные 'data' и' frequency' (несколько раз), но это недопустимо (не побочный эффект свободный). AQL не является полным языком программирования, и это специально: запросы могут быть оптимизированы очень сильно из-за присущих AQL ограничений. Обычно существуют чистые решения AQL, хотя, например, используются подзапросы. – CoDEmanX
, поскольку вы нашли ответ на свою проблему уже, можете ли вы пометить свой ответ как принятый? ;-) – dothebart