У меня есть приложение, в котором отображаются узлы и отношения. После того, как результат показан, узлы и отношения могут быть добавлены через графический интерфейс. Когда пользователь закончил, я хотел бы снова получить все данные из базы данных (потому что у меня нет всех данных к этому моменту во внешнем интерфейсе) на основе идентификатора Neo4j всех узлов и ссылок. Сложность для меня заключается в том, что существуют «плавающие» узлы, которые не имеют отношения в результате графического интерфейса (они будут иметь отношения в базе данных, но я не хочу их). Стоит отметить, что в моих отношениях у меня есть идентификатор начального и конечного узла. Я думал начать с этого, но у меня нет этих плавающих узлов.
Давайте посмотрим на этот плохо нарисованный пример изображения:
Как видите:
- узел 1 связан (без направления) с узлом 2.
- узел 2 связан с узлом 3 (от 2 до 3)
- узел 3 связан с узлом 4 (от 3 до 4)
- узел 3 также связан с узлом 5 (без направления)
- узел 6 - это плавающий узел, без отношений
Предположим, что:
- id (отношение между 1 и 2) = 11
- id (отношение между 2 и 3) = 12
- id (отношение между 3 и 4) = 13
- id (отношение между 3 и 5) = 14
Принимая во внимание, что за реальными данными существует гораздо больше связей между всеми этими узлами, как я могу заново создать это самое изображение через Neo4j? Я пытался сделать что-то вроде:
match path=(n)-[rels*]-(m)
where id(n) in [1, 2, 3, 4, 5]
and all(rel in rels where id in [11, 12, 13, 14])
and id(m) in [1, 2, 3, 4, 5]
return path
Однако это не работает должным образом по нескольким причинам. Кроме того, просто сопоставление на всех узлах не дает мне отношения. Нужно ли объединять несколько запросов? Можно ли это сделать за 1 запрос? Мне нужно написать свой собственный плагин?
Я использую Neo4j 3.3.5.