У меня есть график, содержащий два типа узлов (объекты и куски) и два типа ссылок (аналогичные и содержащие). Некоторые части сделаны из кусков.Cypher Дополнительное совпадение
Я хотел бы извлечь путь к каждой части, начиная с набора объектов.
MATCH (o:Object)
WITH o
OPTIONAL MATCH path = (p:Piece) <-[:contains*]- (o) -[:similarTo]- (:Object)
RETURN path
Вышеупомянутый запрос возвращает только часть деталей. В возвращаемом графе некоторые объекты напрямую не соединяются с какими-либо частями, последние не возвращаются, хотя они действительно делают!
я могу изменить запрос на:
MATCH (o:Object) -[:contains*]-> (p:Piece)
OPTIONAL MATCH (o) –[:similarTo]- (:Object)
Однако мне не удалось вернуть весь путь для этого запроса, который мне нужно вернуть коллекцию узлов и связей с:
WITH rels(path) as relations , nodes(path) as nodes
UNWIND relations as r unwind nodes as n
RETURN {nodes: collect(distinct n), links: collect(distinct {source: id(startNode(r)), target: id(endNode(r))})}
Буду признателен за любую рекомендацию.