2017-02-20 2 views

ответ

0

Другой способ выполнить суммирование по пунктам в коллекции, чтобы использовать UNWIND положение. Например, вы можете заменить исходное положение RETURN с:

UNWIND NODES(p) AS nd 
RETURN p, SUM(nd.userReputation) AS userRep; 

Примечание: выше RETURN пункт также возвращает p, так что функция aggregationSUM агрегатов за соответствующий «ключевое значение». Вероятно, вы захотите вернуть p, чтобы вы знали путь, за который каждая сумма предназначена.

+0

Это будет работать, но план запроса не совпадает с моим. Из-за разматывания + агрегации у вас есть «eageraggregation», которая менее эффективна, чем просто проекция. Но это немного читаемо. – logisima

1

sum - функция агрегации, поэтому она выполняет задание на наборе результатов, а не на массиве. Что вы хотите сделать, это reduce.

Вы можете попробовать это: reduce(s = 0, x IN extract(b IN nodes(p)| coalesce(b.userReputation, 0)) | s + x) AS UserRep

Приветствия

+0

спасибо, что это работает! – MUHAMMAD

+0

@logisma, я не знаю, как-то ваше решение моего вопроса больше не работает! не можете ли вы снова проверить? – MUHAMMAD

Смежные вопросы