ユーザーが多くのチームの 1 つに所属したり、お互いに友達になったりできる複雑なユーザー データベースを Neo4j に移行しています。RDBMS でこれを行うのは面倒で時間がかかりましたが、Neo4j を使えば簡単で素晴らしい作業です。:)
クエリする方法があることを望んでいました
- 1 ホップ離れた関係であり、
- 2ホップ離れた別の関係
同じクエリから。
START n=node:myIndex(user='345')
MATCH n-[:IS_FRIEND|ON_TEAM*2]-m
RETURN DISTINCT m;
その理由は、友達であるユーザーは互いに 1 つのエッジですが、チームによってリンクされているユーザーはそのチーム ノードを介してリンクされているため、2 つのエッジが離れているためです。このクエリは、IS_FRIEND*2 と ON_TEAM*2 を実行し、チームメイト (yeah) とフレンドのフレンド (boo) を取得します。
単一のクエリで両方の異なる長さの関係を取得する簡潔な方法は Cypher にありますか?