希望する結果を説明するために、新しいデータセットを作成しました。ここにリンクがあります
または、cypher を使用してこのコマンドをトリガーできます。
create
(_6 {UserName:"dhansukh", UserProfileID:'1000', EMailID:'f@xyz.com'}),
(_5 {UserName:"dhruv", UserProfileID:'516', EMailID:'e@xyz.com'}),
(_4 {UserName:"dharmistha", UserProfileID:'5262', EMailID:'d@xyz.com'}),
(_3 {UserName:"dinesh", UserProfileID:'995', EMailID:'c@xyz.com'}),
(_2 {UserName:"dharmesh", UserProfileID:'502', EMailID:'b@xyz.com'}),
(_1 {UserName:"manish", UserProfileID:'1', EMailID:'a@xyz.com'}),
_1-[:friends {ApprovalStatus: 1} ]->_2,
_1-[:friends {ApprovalStatus: 1} ]->_3,
_1-[:friends {ApprovalStatus: 2} ]->_5,
_2-[:friends {ApprovalStatus: 1} ]->_3,
_2-[:friends {ApprovalStatus: 1} ]->_5,
_3-[:friends {ApprovalStatus: 1} ]->_4
今、次のクエリを試していますが、期待した結果が得られません。
START me=node:node_auto_index(UserProfileID = '1'), other=node(*)
MATCH pMutualFriends=me-[r?:friends]-mf-[r1:friends]-other
WHERE other.UserName =~ '(?i)dh.*' AND other.UserProfileID <> 1
RETURN other.UserProfileID, other.UserName, r.ApprovalStatus, COUNT(pMutualFriends) AS mutualCount
上記の結果セットでは、(ApprovalStatus が原因で) 重複したレコードを取得しています。関係から、リンクされたノードのみを表示するだけですが、すべてのノードを「dh」で開始したいです。ノード 6 も欠落しています。理由がわかりませんか? 場合によっては、相互カウントも間違って表示されます。ApprovalStatus = 1 であるノードのみを相互カウントで考慮する必要があります。ログイン ノード (例: ノード 1) と検索ノードの両方が関係のプロパティ ApprovalStatus = 1 を持っているように。
編集: 私の予想される結果セット:
UserProfileID UserName ApprovalStatus MutualCount
------------- -------- -------------- -----------
502 dharmesh 1 2 (node 3 & 5 )
516 dhruv 2 1 (node 2)
5262 dharmistha null 1 (node 3)
1000 dhansukh null 0
編集: 明確な理解のために画像を更新しています。
過去 20 ~ 25 日間、この問題に悩まされていますが、適切な解決策が得られていません。どこに問題があるのか わかりません。この問題は、すでにスタックオーバーフローに何度も投稿しています。ここにリンクがあります、およびこれとこれとその他多数。