2013-10-23 2 views
0

기본적으로 여러 노드 사이를 정렬하고 하나의 최신 속성을 반환합니다. 그러나 true가 없으면 false 속성을 갖는 최신 노드를 가져와야합니다.
예 :
nodeA에서 -> 값이 재산 입니다 개명 가진 사실
노드 B -> 노드 n 개의있을 수, 재산 값이 거짓
neo4j의 속성 값을 기반으로 노드 정렬

이제 시나리오입니다 이름이 필요 속성이 이고 이름이이고 이름이 인 경우이 거짓 인 경우 인 경우 최신판이 필요합니다. (노드에는 밀리 초 형식의 시간 속성도 있습니다.) true가 아닌 경우 true, false 일 때 속성이 true입니다.

사이퍼 쿼리를 사용하여이를 수행하는 방법은 무엇입니까? 내가 제대로 질문을 이해한다면 감사

답변

1

, 당신은 "진정한"의 값이, 당신은 먼저 재산 "이름"과 재산 "시간"으로 노드를 정렬 할 수 있습니다 "이름"속성과 최신 노드를 원하는 첫 번째를 내림차순으로, 그리고 가지고있는

Match somenode:Something 
Return somenode 
Order by somenode.renamed DESC, somenode.time DESC 
limit 1 

"이름"는 속성 노드가있는 경우

다음 첫 번째는 값으로 모든 노드의 최신 하나를해야합니다, "true"를 "진정한 가치 "; 값이 "true"인 노드가없는 경우 첫 번째 노드는 "false"값을 갖는 모든 노드 중 최신 노드 여야합니다. 마지막 b 제외

-1
START a=node(*) 
MATCH p=a-[*1..]->b 
WHERE ALL (x IN nodes(p) 
      WHERE x.renamed=true OR (id(x)=id(b) AND x.renamed=false)) 
RETURN p 

모든 노드가 renamed=false이 있어야하며 마지막 brenamed=false

이 있어야합니다
관련 문제