2014-11-07 3 views
2

내 목표는 이벤트 ('NEXT', 'PREV') 간의 관계를 만드는 것입니다. 두 가지 유형의 노드와 하나의 관계가있는 데이터 집합이 있습니다. (:Person)-[:AT]->이고 (:Event)입니다. 사실, 그들은 종종 여러 사건에 (축구 게임을 생각하는) 있습니다. 각 (:Event)에는 .datenum 속성이 있습니다.이 속성은 아무 때 나 상관 없으므로 일 수입니다.Neo4j에서 시간 기반 ('After', 'Before') 관계 만들기

저는 각자를 위해 -[:NEXT]-> 관계를 사용하여 :Event.datenum을 기반으로 이벤트를 함께 연결하는 관계를 만들고 싶습니다. 따라서 (:Event)-[:NEXT]->(:Event)을보고 싶습니다. 각 개인에 대해 처음 (최소 .datenum) 이벤트를 식별하는 방법을 생각할 수 없기 때문에 관계를 만드는 데 문제가 있습니다. 관계를 지시하기 위해 .datenums의 주문을 설정하려면 일종의 그룹 조항이 필요합니다.

저는 Cypher에 익숙하기 때문에 뭔가 놓치고 있어야합니다 (또는 여전히 RDBMS에서 생각하고 있어야 함). 이견있는 사람? 이 행사에서 특정 사람의 출석 사이에 순서를 만들려면 내 생각 고맙다 -

답변

3

는 당신은 예를 들어, 출석의 개념을 소개합니다

(:Person)-[:ATTENDED]->(:Attendance)-[:EVENT]->(:Event) 

'AT'관계가있는 경우 관계를 만들 수 없으므로 주문할 방법이 없습니다.

는 출석의 개념이 그래서 가정, 당신은 다음과 같이 그 출석을 다음을 주문할 수있다 : 의미가

MATCH (p:Person)-[:ATTENDED]->(attendance) 
WITH p, attendance 
ORDER BY p.name, attendance.timestamp 
WITH p, COLLECT(attendance) AS attendances 

FOREACH(i in RANGE(0, length(attendances)-2) | 
    FOREACH(si in [attendances[i]] | 
    FOREACH(si2 in [attendances[i+1]] | 
     MERGE (si)-[:NEXT]->(si2)))) 

희망. 그렇지 않으면 알려주세요.

관련 문제