Cypherを使用してNeo4jで双方向の関係を作成する方法はありますか?両方向で2つの単方向の関係を作成するのではなく、関係を双方向にしたいと考えています。例:
(A)<-[FRIEND]->(B)
のではなく:
(A)-[FRIEND]->(B)
(A)<-[FRIEND]-(B)
前もって感謝します :)
いいえ、ありません。 neo4jのすべての関係には方向があり、指定されたノードで開始および終了します。
いくつかの回避策があります。
まず、あなたが提案したように、AからBへの関係と、BからAへの関係の2つの関係があります。
または、MATCHクエリを作成するときに、次のようなクエリを使用して、パターンを無方向に照合するように指定できます。
MATCH (A)-[FRIEND]-(B) RETURN A, B
これは、AがBと友達であるかどうか、またはその逆であるかどうかを気にせず、関係を作成するときに任意に方向を選択できるようにします。
この記事によると: Neo4jでのデータのモデリング:双方向の関係
厳密に良い選択は、クエリ時に方向を指定せずに、任意の方向に関係を作成することです。
MATCH (neo)-[:PARTNER]-(partner)
エンジンはEdgeをどちらの方向にもトラバースできます。逆方向エッジを作成する必要はなく、スペースと走査時間を無駄にするだけです。