СУБД Neo4j Двунаправленная Связь

есть ли способ создать двунаправленные отношения в Neo4j с помощью Cypher? Я хотел бы, чтобы отношения были двунаправленными, а не делали два однонаправленных отношения в обоих направлениях, например:

(A)<-[FRIEND]->(B)

вместо:

(A)-[FRIEND]->(B)
(A)<-[FRIEND]-(B)

спасибо заранее :)

2 ответов


нет, нет. Все отношения в neo4j имеют направление, начинающееся и заканчивающееся на данном узле.

есть небольшое количество обходных путей.

  • во-первых, как вы предположили, у нас может быть два отношения: одно из A В B, а другое из B В A.

  • кроме того, при написании запроса наш матч, мы можем указать, чтобы соответствовать directionlessly моделей, с помощью запроса, такие как

    MATCH (A)-[FRIEND]-(B) RETURN A, B
    

    который не будет заботиться о том, дружит ли A С B или наоборот, и позволяет нам выбирать направление произвольно, когда мы создаем отношения.


согласно этой статье:данные моделирования в Neo4j: двунаправленные отношения

строго лучший выбор-создать отношение в произвольном направлении и не указывать направление при запросе:

MATCH (neo)-[:PARTNER]-(partner)

двигатель способен пересекать край в любом направлении. Создавать anti-directional край ненужен и только служит расточительствовать космос и время обхода.