подзапрос шифра: получить узел с максимальным/минимальным значением и обработать его

Я изо всех сил пытаюсь вернуть узел с наибольшим значением и обработать этот узел дальше.

Вот как я бы вернул узел с наибольшим значением:

START n=node(startnode)
MATCH n-[:TYPE]-m
RETURN m
ORDER BY m.value DESC LIMIT 1

но теперь я в подзапросе

START n=node(somenode)
MATCH n-[:TYPE1]-q
WITH DISTINCT q
MATCH q-[:TYPE2]-m

и тогда ORDER BY .. LIMIT 1 явно больше не работает, потому что я хочу один результат для каждого q. Как это делается?

Кроме того, как только у меня будет m с наибольшим значением для каждого q, мне также нужно будет его обработать:

RETURN q, m.maxvalue, x.anothervalue

из

MATCH m-[:HAS_ONE_LINK_TO]->x

Поэтому, пока я играл с коллекциями (collect(m)), я не нашел способа расширить их обратно до «строк результатов» для применения этого MATCH.


person bebbi    schedule 19.07.2013    source источник


Ответы (1)


Непроверено... дайте мне знать, если это сработает для вас:

START n=node(somenode)
MATCH n-[:TYPE1]-q                // initial query
WITH DISTINCT q
MATCH q-[:TYPE2]-m
WITH q, max(m.value) as max       // get max for q
MATCH q-[:TYPE2]-m                
WHERE m.value = max               // find the max m for each q
WITH q, m
MATCH m-[:HAS_ONE_LINK_TO]->x     // find x from m
RETURN q, m, x

Редактировать: из-за недавних голосов по этому старому ответу... рассмотрите более свежий запрос, написанный в эпоху 3.x с использованием сбора/раскрутки - также непроверенного (постарайтесь не делать этого, если количество мс будет довольно большим, так как они могут быть сохранены в частичном результате запроса вместо возможности их потоковой передачи):

MATCH (n:Label)-[:TYPE1]-(q)                  // initial query
WITH DISTINCT q
MATCH (q)-[:TYPE2]-(m)
WITH q, max(m.value) as max, collect(m) as ms // get max for q, collect ms
UNWIND ms as m
WHERE m.value = max
MATCH (m)-[:HAS_ONE_LINK_TO]->(x)             // find x from m
RETURN q, m, x
person Eve Freeman    schedule 19.07.2013
comment
Я ответил на ваш другой [гораздо более сложный] вопрос, в основном из-за этого комментария. :П - person Eve Freeman; 20.07.2013