Neo4j 초보자는 여기에 있지만 쿼리가 더 야심 차고 있습니다. 나는 제품 N을 소유하고 있지 않은 고객 C2 세트를 검색하려고 시도하지만 제품 N을 소유 한 고객 C 세트가 소유하고있는 제품 세트 N2에서 발견 된 제품을 소유합니다. 쿼리는 정렬 이 그것입니다 생각 (SKU 123456
에 의해 확인 된 제품 제공) :영업 상관 관계를 기반으로 제품을 구매할 가능성이있는 고객 집합을 식별합니다.
Start
N=node:node_auto_index(sku="123456")
match
(C)-[:owns]->(N),
(C)-[:owns]->(N2),
(book)-[:owned_by]->(C2)
WHERE NOT((C2)-[:owns]->(N))
return C2.name
limit 10
나는 심지어 제정신 방법으로 이것에 대해 건가? 이상한 점은 결과 집합이 제한되어있을 때 즉시 반환된다는 것입니다 (예에서는 10 개). 그러나 제한을 제거하면 웹 콘솔에 "알 수없는 오류"오류가 표시됩니다 (로그를 보면 아무 것도 나타나지 않습니다.).
통찰력을 얻었습니다.
편집
마이클 기아 확실히 나는 그의 대답은 그러나 문제가 오타로 인해 아니었다 동의거야 그래서 도움; 필자는 설명이 약간 복잡하여 두려웠 기 때문에 문제 설명에서 표기법과 일치하는 대체 구문을 작성하는 동안 소개했습니다. 그러나 해결책은 다른 사람들을 따라갈 수 있으므로 여기서 설명 할 것입니다. 나는 Cypher 쿼리를 프로토 타입하기 위해 Neo4j 웹 브라우저를 사용하고 있었지만,이 방법은 상당히 효과적 이었지만 어떤 이유로 든 1,000 개가 넘는 레코드가 포함 된 응답을 허용하지 않았습니다. 이것이 제한된 쿼리가 응답을 즉시 반환하는 이유입니다. 이후에 쿼리를 1,000 개가 넘는 행으로 제한했을 때 응답이 너무 커서 (1,000 개 이상의 행)라고 들었습니다. 내가 한도를 모두 없애면 "알 수없는 오류"라는 오류가 발생합니다. 브라우저 관리자가 1,000 행 이상의 응답을 반환 할 수 없다는 것을 혼란스러운 방식으로 표시하는 것입니다. 제한이 사용되지 않을 때 다르게보고되는 이유는 확실하지 않습니다.
Neo4j 셸에서 쿼리를 실행하여이 결론을 얻었습니다.이 쿼리는 행복하고 즉각적으로 1,000 개가 넘는 행을 반환했습니다. 희망이 사람을 도움이됩니다.