Neo4j: есть ли способ создать новый узел на основе группы узлов, которые соответствуют определенным критериям - PullRequest
1 голос
/ 24 июня 2019

Моя база данных neo4j запущена и работает. У меня также есть процесс, который выполняется каждые 5 минут, и он создает узлы типа «Точка».

«Точка» обладает следующими свойствами:

pointId, cameraId, classId, groupId, datetime

Узлы типа «Точка» относятся к себе, если: pointId & cameraId & classId & groupId одинаковы.

Можно ли каким-то образом получить все узлы "Точка", которые связаны между собой и на основе этой группы узлов создать новый узел "Линия", где "Линия" - [: CONTAINS] -> "Точка"?

ОБНОВЛЕНИЕ: На следующем рисунке показано, что у меня есть и что мне нужно. Для простоты я только что определил свойство «камера», если узел Point разделяет камеру, то ее необходимо сгруппировать.

enter image description here

1 Ответ

1 голос
/ 24 июня 2019

Да, это возможно.

Вам необходимо набрать все очки для каждой пары этих свойств. Затем создайте узел Line, а затем создайте связь между созданной линией и всеми сгруппированными точками.

Добавьте необходимые свойства в узел строки в следующем запросе.

MATCH (p:Point)
WITH p.pointId as pointId, p.cameraId as cameraId, p.classId as classId, p.groupId as groupId, collect(p) as related_points
CREATE (line:Line)
WITH line, related_points
UNWIND related_points as point
CREATE (line)-[:CONTAINS]->(point)
...