Я использую Neo4j (версия 3.4.1) и Spring-data-neo4j (5.0.10.RELEASE) в моем приложении. Я также использую OGM.
У меня есть следующие отношения между моими узлами:
Я хочу найти все узлы в каждом пути от узла A до узла F (в порядке обхода)
Например:
Для пути A -> B -> F я хочу узлы A, B, F (в таком порядке)
Для пути A -> C -> D -> F я хочу узлы A, C, D, F (в таком порядке) и т. Д.
Я хочу захватить узлы, пройденные в каждом пути отдельно.
Запрошенный мной шифровый запрос выглядит так:
@Query("MATCH p=((u:User{name:{nameOne}})-[:RELATED*1..3]-(v:User{name:{nameTwo}})) RETURN p")
List<User> getRelationBetweenUsers(@Param("nameOne") String nameOne, @Param("nameTwo") String nameTwo);
Я также попытался использовать List<List<User>>
в качестве возвращаемого типа, чтобы получить узлы на каждом пути в виде отдельного списка, как показано ниже
@Query("MATCH p=((u:User{name:{nameOne}})-[:RELATED*1..3]-(v:User{name:{nameTwo}})) RETURN p")
List<List<User>> getRelationBetweenUsers(@Param("nameOne") String nameOne, @Param("nameTwo") String nameTwo);
Однако это возвращает все узлы, пройденные по нескольким путям вместе, тогда как я хочу, чтобы они проходили по каждому пути.
i.e result is List <A,B,C,D,F> where as what I want is
List<List<A,B,F>, List<A,C,D,F>, List<A,D,F>>.
Надеюсь, вы поняли идею.
Кто-нибудь может дать несколько советов / предложений о том, как мне достичь ожидаемых результатов.
С уважением,
Варуна