이 암호를 사용하여 범주 당 5 개의 제품을 출력하는 암호를 작성하고 있습니다.
MATCH (s:Supplier)-[:POST]->(p:Product)-[:BELONG_TO]->(c:Category)
WITH *
MATCH r = (c)<-[:BELONG_TO*0..5]-(p)
WITH c, collect(tail(nodes(r))) AS allCatProducts
RETURN c, reduce(outputProducts=allCatProducts[..0] , catProduct IN allCatProducts | outputProducts + catProduct)[..5];
그러나이 사이퍼의 성능은 매우 나쁩니다. 내가 여기서 잘못한 것이 있습니까?
또한 부분을 이해하려고 노력하고 있습니다.
[:BELONG_TO*0..5]
과
(catProduct)[..5]
어떤 도움이라도 대단히 감사하겠습니다.
쿼리를 지나치게 복잡하게 만드는 것 같습니다.이 쿼리가 작업을 수행해야합니다.
MATCH (s:Supplier)-[:POST]->(p:Product)-[:BELONG_TO]->(c:Category)
RETURN c.name, collect(p)[..5] as products
다른 질문에 관하여 :
(x)-[r:BELONG_TO*0..5]->(y)
가변 길이 경로 쿼리이지만 여기서 y
노드를 찾을 수 없으면 다음 x
과 같이 반환됩니다.y
http://neo4j.com/docs/stable/query-match.html#_relationships_in_depth
(collection)[..5]
컬렉션의 처음 5 개 요소 만 반환하도록 지시하는 것입니다. 컬렉션은 예를 들어 List
Java 또는 array
PHP 에서 와 같습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다