Cypher 쿼리에 대한 약간의 지원을 찾고 있습니다. 자신의 서적 p
을 소유 한 고객이 peer
인 경우, peer
이 소유하고 있지만 누가 p
을 소유하고 있지 않은 한 권의 책을 소유 한 고객 집합 target
을 검색 할 수 있습니다. 이것은 다음 쿼리를 사용하여 수행됩니다 :상관 관계가있는 판매 관계 수 계산
match
(p:Book {isbn:"123456"})<-[:owns]-(peer:Customer)
-[:owns]->(other:Book)<-[o:owns]-(target:Customer)
WHERE NOT((target)-[:owns]->(p))
return target.name
limit 10;
내 다음 단계는 많은other
책은 target
의 각 구성원은 자신의 설정 방법 을 결정하고 그에 따라 해당 구성원을 주문하는 것입니다. Neo4j 문서 및 SO 답변을 기반으로 여러 변형을 시도했지만 행운이 없습니다. 예를 들어 내가 with
를 사용하여 시도 : 나는 또한 가장 합리적인 쿼리 무엇 내 초보자 눈에 보인다 시도
match
(p:Book {isbn:"123456"})<-[:owns]-(peer:Customer)
-[:owns]->(other:Book)<-[o:owns]-(target:Customer)
WHERE NOT((target)-[:owns]->(p))
WITH target, count(o) as co
WHERE co > 1
return target.name
limit 10;
: 두 경우 모두
match
(p:Book {isbn:"123456"})<-[:owns]-(peer:Customer)
-[:owns]->(other:Book)<-[o:owns]-(target:Customer)
WHERE NOT((target)-[:owns]->(p))
return target.name, count(o)
limit 10;
쿼리는 위쪽 (끝없이 실행 실행을 멈추기 10 분 전). 내가 뭘 잘못하고 있는지에 대한 통찰력?
편집 이 실행 않습니다 후자의 쿼리를 밝혀 있지만, 완료하는 데 15 분 소요되며 여기에서 알 수 있듯이, 잘못된 번호를보고됨에 : 나는 책을 각각의 수를 찾고 있어요
+-------------------------------+
| target.name | count(o) |
+-------------------------------+
| "John Smith" | 12840 |
| "Mary Moore" | 11501 |
+-------------------------------+
고객은 특히 12840
과 11501
숫자가 실제로 어디에서 오는지 확실하지 않습니다. 이견있는 사람?
당신이 인덱스를 가지고 있습니까? Btw 첫 번째 쿼리에 "pisbn"이 있습니다 - isbn이되어야합니까? –
오타가 수정되었습니다. 쿼리를 잘못 입력 한 것 같습니다. 방금 요지를 만들었습니다 : http://console.neo4j.org/r/sk39pk. 무엇이 당황 스럽습니까 (저에게) 그 질문은 광고 된 것과 똑같이 작동한다는 것입니다 (아주 작은 데이터 세트로). 아마도 쿼리를 완료하기 위해 실행해야 할 필요가 있을까요? 지금 색인을 확인하려고합니다. – Jason
내가 실제로 인덱스 세트합니까 : $ 스키마를 인덱스 ON : 도서 (ISBN) 온라인 은 MySQL을의'쇼 processlist'에 쿼리 상태를 볼 수 가깝다? 이것은 Neo4j의 오히려 신비한 측면 중 하나 인 것처럼 보입니다. 쿼리가 실행될 때 정확히 무슨 일이 일어나는지 모니터링하기가 어렵습니다. – Jason