우정 상태로 내 친구의 상호 수를 원합니다. 각 사용자에 대한 노드를 만들고 속성 사이의 관계를 만들었습니다. 나는 다음 쿼리에 따라 원하는 결과를 발견했다. 이 테스트 케이스에서는 로그인 사용자 아이디가 1이고 문자 'dh'로 시작되는 사용자를 검색하려고합니다. 그래서, 내 쿼리는 다음과 같습니다.결과 집합을 결합하십시오
1st Query : which is returned all users with specific given keyword.
--------------------------------------------------------------------
START other=node(*)
WHERE other.FirstName =~ "(?i)dh.*" AND other.UserID <> 1
WITH other, me=node:node_auto_index(UserID = '1')
RETURN other.UserID, other.UserName, other.FirstName, other.LastName, other.ImagePath
LIMIT 100;
이 쿼리는 모든 사용자가 이제 'DH' 시작, 내 로그인 사용자 사이의 우정 상태를 원하고이 사용자를 검색 저를 반환합니다. 그래서 다음과 같이 수행했습니다 :
2nd Query : which is returned approvalstatus between user1 and other
--------------------------------------------------------------------
START me=node:node_auto_index(UserID = '1')
MATCH me-[myR:friends]-(x)
RETURN x.UserID, myR.ApprovalStatus
ORDER BY x.UserID
마지막으로, 다음 쿼리에 따라 사용자 1과 다른 사람들 사이의 상호 친구 수를 필요로합니다.
3rd Query : which is returned mutual count between user1 and other
------------------------------------------------------------------
START me=node:node_auto_index(UserID = '1'), other=node(*)
MATCH pMutualFriends=me-[r:friends]-mf-[r1:friends]-other
WHERE r.ApprovalStatus = 1
AND r1.ApprovalStatus = 1
AND other.FirstName =~ "(?i)dh.*" AND other.UserID <> 1
RETURN other.UserID, COUNT(pMutualFriends) AS mutualCount
ORDER BY other.UserID
이제 RDBMS에서와 마찬가지로이 쿼리에 모두 참여하고 싶습니다. 첫 번째 결과 집합은 모든 레코드를 반환하고 두 번째 결과는 & 세 번째 결과 집합과 조인해야합니다.
어떻게해야합니까?
감사합니다. @ 에드워드, 귀하의 검색어는 매우 유용하게 보입니다. 그러나 한 가지가 빠져 있습니다. 'dh'로 시작하는 이름을 가진 모든 노드가 필요합니다. 여기에 쿼리에서 사용자 1에 연결된 노드 만 반환하고 관계에서 "ApprovalStatus"속성도 필요합니다. 원하는 결과를 얻을 수 있도록 도와 줄 수 있습니까? –
안녕하세요. @edward, 우리는 userid를 사용하여 3 개의 결과 집합 위에 합류 할 수 있습니까? RDBMS가 왼쪽 가입과 같이 그래서 모든 노드는 결과 1의 'ApprovalStatus'와 결과 2의 'MutualCount'를 결과 3에서 가져옵니다. 당신을 기다리고 있습니다. 감사. –
나는 데이터에 대해 묻는 질문을 이해하는 데 어려움을 겪고있다. " 'dh'로 시작하는 이름을 가진 모든 사용자를 찾고 친구를 공유하는 모든 사람과 공통의 친구 수를 반환합니다." – Edward