Получить все соединительные узлы в neo4j для всех узлов, соответствующих запросу - PullRequest
0 голосов
/ 04 мая 2018

У меня есть 2 типа узлов в моем neo4j db

Skill и SkillCluster

Узел Skill как направленное ребро [Отношение BelongsTo] к одному или нескольким узлам SkillCluster. Я хочу найти все названия умений и имена связующих их кластеров умений, которые принадлежат конкретному кластеру умений. Я написал запрос, чтобы найти все навыки, относящиеся к кластеру навыков, как этот -

match(cluster:SkillCluster {Name: 'Engineering'})<-[:BelongsTo]-(skill:Skill) return skill.Name, cluster.Name;

Этот запрос возвращает этот вывод

skill.Name                                      cluster.Name
"Dxdesigner"                                    "Engineering"
"Electromagnetic Interference (EMI) Engineer"   "Engineering"
"SEAM 3D"                                       "Engineering"
"Electromagnetic Interference (EMI) Mitigation" "Engineering"

skill Dxdesigner подключается к 2 узлам кластера навыков, но мой запрос не возвращает оба из них.

1 Ответ

0 голосов
/ 04 мая 2018

Попробуйте:

match(cluster:SkillCluster {Name: 'Engineering'})<-[:BelongsTo]-
                                       (skill:Skill)-
                                       [:BelongsTo]->(cluster2:SkillCluster) 
return skill.Name, cluster.Name, cluster2.Name;

Кроме того, вам не нужно возвращать кластер. Имя, поскольку вы уже установили Имя в «Инженерное дело». Так что это всегда вернет инженерию.

Обновление: согласно комментарию InverseFalcon:

match(cluster:SkillCluster {Name: 'Engineering'})<-[:BelongsTo]-
                                       (skill:Skill)-
                                       [:BelongsTo]->(cluster2:SkillCluster) 
return skill.Name, collect(cluster2.Name) + cluster.Name as clusters;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...