СУБД 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 край ненужен и только служит расточительствовать космос и время обхода.