2017-10-10 6 views
1

내 검색에서 객체의 속성을 동적으로 설정하는 방법을 찾지 못했습니다. 단지 'Detail'속성 Neo4j Graph 또는) 아직 작동하지 않습니다 (Neo4j - Cypher - Property가 Type (r)과 같이 동적 인 빌드 객체

MATCH(p:Person)-[r]->(m:Movie) 
WITH { Person: p.name, 
     Detail: collect(r.roles) 
    } AS Result 
RETURN Result 

내 목표 Neo4j Console를 통해 :

MATCH(p:Person)-[r]->(m:Movie) 
WITH { Person: p.name, 
     CASTED_FOR: // --> Only values(r.roles) for relationship "CASTED_FOR" needed here 
     ACTED_IN: // --> Only values(r.roles) for relationship "ACTED_IN" needed here 
    } AS Result 
RETURN Result 

나는 K) 여기

내 샘플입니다 이제 예를 들어 [r : CASTED_FOR] 또는 WHERE Type (r) = "CASTED_FOR"이지만 WITH 및 MATCH 쿼리를 여러 개 갖고 싶지 않습니다.

이 쿼리는 당신이 원하는 것을 할 사이퍼의 list comprehension 구조를 사용

답변

3

감사 :

MATCH (p:Person)-[r]->(:Movie) 
WITH p, COLLECT(r) AS rs 
RETURN { 
    Person: p.name, 
    CASTED_FOR: [x IN rs WHERE TYPE(x) = 'CASTED_FOR' | x.roles], 
    ACTED_IN: [x IN rs WHERE TYPE(x) = 'ACTED_IN' | x.roles] 
} AS Result 
+0

멋진 대답을, 감사합니다 – Peter