暗号クエリと複数の一致では得られないことがあります。
環境 :
target = node(2145) = アプリのビデオ ゲーム
me = node(2570) = ログインしているユーザー
指定されたターゲットとやり取りしたすべてのユーザー (私を含む) を取得しようとしています。さらに、これらのユーザーを自分との距離で並べ替えたい...
すなわち、目標は、ビデオ ゲームを操作したユーザーを表示することです。つまり、最初に私と私の友人、次に他のユーザーです。
私のクエリ:
START target=node(2145), me=node(2570)
MATCH (target)-[:INTERACTIONS]->()<-[:IS_TARGET_OF]-(interactions)<-[:IS_SOURCE_OF]-()<-[:INTERACTIONS]-(users)
WITH me, users
MATCH p = (users)-[:CONTACTS]->()-[?:IS_FRIEND_WITH*0..3]-()<-[:CONTACTS]-(me)
RETURN users, MIN(LENGTH(p)) as conn
ORDER BY conn ASC
問題 :
ターゲットとやり取りしたのは私だけであることを考えると、2570 という 1 つの結果が得られるはずです。
私が抱えている問題は、返されたユーザーに「私」が表示されないことです。クエリは何も返しません
私が試したこと:
- 最初の MATCH の直後に RETURN すると、2570 という 1 つの結果が得られます。
2 番目の一致で、p = (users)-[*0..3]-(me) を試すと、1 つの結果 2570 も得られます。
クエリの 2 番目の部分のみを使用して、次のことを試した場合:
START me=node(2570), users=node(2570, 2802) MATCH p = me-[:CONTACTS]->()-[?:IS_FRIEND_WITH*0..3]-()<-[:CONTACTS]-(users) RETURN users, MIN(LENGTH(p)) as conn ORDER BY conn ASC
私は 2570 と 2802 を取得します (彼は私の友人なので)。
ここで何か間違ったことをしていると確信していますが、何がわかりません..どうすれば問題を解決できるか分かりますか?
ありがとう、