2015-05-08 2 views
1

Я построил небольшой график, где все экраны подключены, а поток экрана зависит от системы/пользователя. Таким образом, система/пользователь - тип отношения.Как получить все узлы в графике определенного типа корабля типа

Я ищу выбор всех узлов, связанных с определенным транспортным средством отношения с начального экрана. Меня не волнует глубина, так как я не знаю глубины графика. Что-то вроде этого, но ниже запрос занимает когда-либо, чтобы получить результат, и его возвращение неправильного подключения не совпадающее атрибут {пути: «CC»}

матча (п: экран {isStart: истинный}) - [г : СЛЕДУЮЩИЙ * 0 .. {путь: 'CC'}] -() возвращение г, п

ответ

1

несколько предложений:

  1. Убедитесь, что вы создали индекс для :screen(isStart):

    CREATE INDEX ON :screen(isStart); 
    
  2. Вы уверены, что хотите включить дороги длиной 0 длины? Если нет, вытащите 0.. из вашего запроса.
  3. Вы не указали направленность: NEXT отношений, поэтому БД должна смотреть как на входящие, так и исходящие: NEXT отношения. При необходимости укажите направление.

  4. Чтобы свести к минимуму количество строк результатов, добавьте предложение WHERE, гарантирующее дальнейшее продление текущего пути.

Вот предлагаемый запрос, который объединяет в себе последние 3 предложения (исправить его в соответствии с вашими потребностями):

MATCH (n:screen {isStart:true})-[r:NEXT* {path:'CC'}]->(x) 
WHERE NOT (x)-[:NEXT {path:'CC'}]->() 
return r,n; 
+0

спасибо Сэм. Это сработало! –

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