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)