2014-06-08 2 views
1

Я хочу вернуть список узлов «Группы», которые имеют более одного узла «Thing», принадлежащих каждому из них. Есть несколько повторяющихся отношений, поэтому я считаю DISTINCT Things. Этот запрос, кажется, работает нормально до сих пор:Как вернуть узлы с несколькими отношениями с Neo4j?

MATCH (n:Thing)-[r:BELONGS_TO]-(g:Group) 
WITH g, count(DISTINCT n) as thing_cnt 
WHERE thing_cnt > 1 
RETURN g, thing_cnt ORDER BY thing_cnt 

Я хотел бы быть в состоянии представить себе все эти узлы группы и вещи, которые принадлежат им, так что я попытался это:

MATCH (n:Thing)-[r:BELONGS_TO]-(g:Group) 
WITH g, count(DISTINCT n) as thing_cnt 
WHERE thing_cnt > 1 
RETURN n, g 

Но я получаю сообщение об ошибке, указывающее, что n не определено. Может ли кто-нибудь предложить способ сделать это? Благодаря!

ответ

0

Предложение WITH должно включать в себя n:

MATCH (n:Thing)-[r:BELONGS_TO]-(g:Group) 
WITH n, g, count(DISTINCT n) as thing_cnt 
WHERE thing_cnt > 1 
RETURN n, g 

Как и в сторону, вы должны всегда указывать направленность ваших отношений, если это возможно. Например, (n:Thing)-[r:BELONGS_TO]->(g:Group). По крайней мере, это улучшает читаемость и гуманность вашей модели графа. Кроме того, это может ускорить ваш запрос.

+0

Хммм Я пробовал это, но он возвращает 0 строк (тогда как первый запрос, когда я просто прошу вернуть g, дает мне 17 строк). Я что-то пропустил? Также спасибо за подсказку! – Pocahontas

+0

Если вы указали направленность отношения, убедитесь, что она направлена ​​в правильном направлении. Я предположил, что '- [r: BELONGS_TO] ->' был правильным, но, возможно, ваши данные изменили его: '<- [r: BELONGS_TO] -'. – cybersam

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