Arangodb: как использовать MERGE_RECURSIVE() с массивом

В AQL MERGE_RECURSIVE функция не может принимать массив в качестве входных данных. Как тогда я буду использовать указанную функцию с результатом предыдущего запроса, который, конечно же, является массивом?

Например, если результат моего запроса:

[
  {
    "John": {"city": "Berlin"}
  },
  {
    "John": {"country": "Germany"}
  }
]

я бы хотел MERGE_RECURSIVE(myResult) возвращать:

{
  "John": {"city": "Berlin", "country": "Germany"}
}

Мне просто нужен способ использовать MERGE_RECURSIVE с выходным массивом моего запроса

1 ответ

Решение

Если вы получили массив, как x = [1, 2, 3] но функция, которой вы хотите передать это, требует, чтобы каждый элемент был отдельным аргументом, поэтому SOME_FUNC(1, 2, 3) вместо SOME_FUNC( [1, 2, 3] )затем есть функция APPLY() для расширения массива:

APPLY("SOME_FUNC", [1, 2, 3] )

По сути это похоже на следующий вызов:

SOME_FUNC(x[0], x[1], x[2])

... но вы сэкономите, чтобы напечатать все это с APPLY() и он будет работать с переменным количеством элементов в массиве. Таким образом, решение в вашем случае:

RETURN APPLY("MERGE_RECURSIVE", myResult)
Другие вопросы по тегам