Недопустимое использование функции агрегирования в этом контексте в запросе SET (Neo4j)

Интересно, почему это считается недопустимым использованием агрегатных функций в Neo4j Cypher:

MATCH (p:Project)-[:EMPLOYS]-(n:Person) SET p.youngest = MIN(n.age);

В то время как следующее считается допустимым вариантом использования:

MATCH (p:Project)-[:EMPLOYS]-(n:Person) RETURN p.name, MIN(n.age) AS youngest;

Как мне переписать первый запрос, чтобы сделать его действительным?


person retrography    schedule 15.12.2014    source источник


Ответы (2)


Что касается «почему» ваша первоначальная попытка Cypher не работает, и ответ @mah действительно работает: Cypher разрешает использовать функции агрегации только в предложениях WITH и RETURN.

person cybersam    schedule 15.12.2014
comment
Почему? Какова цель этой реализации? - person Monica Heddneck; 26.05.2016
comment
@MonicaHeddneck Вы можете спросить об этом людей из neo4j, скажем, на одном из их каналов Slack . - person cybersam; 26.05.2016

Небольшое изменение запроса заставляет его работать:

MATCH (p:Project)-[:EMPLOYS]-(n:Person)
WITH p, MIN(n.age) AS min_age 
SET p.youngest = min_age;
person retrography    schedule 15.12.2014
comment
Я исправил небольшую опечатку в этом ответе и немного переформатировал Cypher. - person cybersam; 16.12.2014