2017-12-29 5 views
0

일련의 이벤트를 작성하여 각 이벤트의 연속을 설명 할 수 있어야합니다. 내가 무엇을 난 후하는목록의 연속 요소 간의 관계 만들기

즉 연속적으로 각 사이의 관계를 만들 노드 ID의이 목록을 사용하는 가장 좋은 방법입니다

MATCH (ch:Checkin) 
WITH ch 
ORDER BY ch.timestamp ASC 
WITH collect(id(ch)) AS checkins 

즉, 타임 스탬프 순서로 자신의 노드 ID의 정렬 된 목록을 만들 수 있다는 사실을 알고

Checkin_0 < -FOLLOWS- Checkin_1 < -FOLLOWS- Checkin_2 등

답변

1

에 당신은 루프에서 체크 인을 열거 할 RANGEUNWIND를 사용할 수 있습니다

MATCH (ch:Checkin) 
WITH ch ORDER BY ch.timestamp ASC 
WITH COLLECT(ch) AS checkins 
UNWIND RANGE(1, size(checkins)-1) AS i 
WITH checkins[i-1] AS prev, 
    checkins[i] AS next 
MERGE (prev)<-[f:FOLLOWS]-(next) 
RETURN prev, f, next 
+0

감사합니다. 뭔가 옳지 않습니다. 예를 들어 체크 인을 나열하려고 시도합니다. 'MATCH (ch : Checkin) RETURN ch LIMIT 5' 쿼리를 완료 한 적이 없다. 'size ((: Checkin) - [: FOLLOWS] -> (: Checkin))'도하지 않습니다. Checkin 노드를 선택하여 이전 쿼리를 확장하면 원하는 시퀀스가 ​​표시됩니다. – wikitect

+0

내 검색어는 정확합니다. 그런데 순차적으로 얼마나 많은 데이터가 있습니까? 'prev, f, next' 대신에'COUNT (f)'를 돌려 주면 어떨까요? –

+0

작은 데이터 세트 - 단지 498 개의 체크 인이 있습니다. 사실 새 쿼리를 완료 할 수 없습니다. 중지 + 무익한 상태로 다시 시작되었습니다. – wikitect

1

APOC Procedures을 설치하고 사용하는 방법을 살펴볼 수도 있습니다. apoc.nodes.link()이라는 프로시 듀어에는 콜렉션 W 관계 유형 문자열을 취하여 각 노드 사이의 관계를 순서대로 작성합니다.

MATCH (ch:Checkin) 
WITH ch 
ORDER BY ch.timestamp DESC 
WITH collect(ch) AS checkins 
CALL apoc.nodes.link(checkins, 'FOLLOWS') 
RETURN checkins 
+0

예. 공장. 링크 된 세트는 동일한 새로운 문제를 겪습니다. (Checkin) - [: FOLLOWS] -> (: Checkin)과 이후에 아무 것도 쿼리 할 수 ​​없습니다 (Firefox + Safari). – wikitect