2012-07-24 5 views
1

사이퍼 쿼리 자체에서 일부 기본값을 반환하는 데 도움이되는 삼항 연산자를 구현해야합니다.neo4j 사이퍼의 세 번째 연산자/기본값

시나리오입니다 -

직원의 도시 델리의 경우

, 삼항 연산자처럼 10

뭔가를 돌려 다른 5를 반환합니다.

start employee = node(5) 
return employee.city == 'DELHI' ? 5 : 10 as val; 

나는

start employee = node(5) 
return coalesce (employee.city == 'DELHI', 5) 

하지만 행운 같은 일을 시도했다.

Cypher 또는 Traversal 인 neo4j에서 이러한 시나리오를 구현할 수있는 방법이 있습니까?

답변

2

불행히도 그것은 기본적으로 지원되지 않지만 필터, 머리글 및 모음 리터럴을 사용하여이 작업을 수행 할 수 있습니다.

아이디어는 두 개의 요소 목록과 "사실 브랜치"의 첫 번째 요소에 대해 true가되는 필터 식과 거짓 목록의 값을 나타내는 두 번째 요소에 대한 사실이되는 것입니다 . 그래서 일반적으로 http://console.neo4j.org/r/6tig7g

start n=node(5) return head(filter(a in [5,10] : n.city = 'DELHI' OR a = 10)) 

:

이 콘솔 예제를 참조

head(filter(a in [true-result,false-result] : CONDITION OR a = false-result)) 
+2

이 아직 표준 기능으로 구현되지 않는 이유는 무엇입니까? – Polyakoff