Arangodb: как использовать MERGE_RECURSIVE () с массивом - PullRequest
0 голосов
/ 06 декабря 2018

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

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

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

Я хочу MERGE_RECURSIVE(myResult) вернуть:

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

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

1 Ответ

0 голосов
/ 06 декабря 2018

Если вы получили массив, подобный 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)
...