Хорошо, если вам нужно это только для графических результатов, для каждого отдельного запроса, то вы можете использовать виртуальные отношения через Процедуры APOC . Это позволит вам создать поддельные виртуальные отношения, которые на самом деле не существуют на графике, но могут быть визуализированы в представлении результатов графика. Имейте в виду, что они действуют только в течение срока действия запроса, они не будут сохранены на графике, вам нужно будет создавать виртуальные отношения с каждым запросом, где вы хотите их просматривать.
Вот пример, который работает для графика фильмов (из :play movies
в браузере neo4j):
MATCH (k:Person{name:'Keanu Reeves'})-[:ACTED_IN]->(m:Movie)
WITH k, m
ORDER BY m.released ASC
WITH k, apoc.coll.pairsMin(collect(m)) as pairs // list of pairs of adjacent nodes
UNWIND pairs as pair
CALL apoc.create.vRelationship(pair[0], 'NEXT_MOVIE', {year:pair[1].released}, pair[1]) YIELD rel
RETURN k, pair[0] as m1, pair[1] as m2, rel
Имейте в виду, что если вы действительно хотите сохранить их на графике, вам понадобится путь через эти фильмы для каждого актера, поэтому создаваемые вами отношения должны иметь что-то вроде actorId
свойства, таким образом, когда вам нужно соответствовать пути фильмов для актера, вам нужно убедиться, что все: отношения NEXT_MOVIE должны иметь идентификатор этого актера.
Это единственный способ, которым вы могли бы сделать это разумным способом, иначе вы не знали бы, какие отношения следует пересекать, поскольку вам нужно иметь контекст того, какие отношения принадлежат какому-либо действующему.