2016-09-26 3 views
-1

있는 경로를 찾기 위해 나는 다음과 같이 구성되어 그래프가 있습니다OrientDB 날짜 조작 같은 날에 노드하지만 서로 다른 세

A -> B

A A 날짜 필드가 있습니다.

이것은 여전히 ​​my other question에서와 같은 문제를 기반으로 합니다만, 이것은 하나의 OSQL 호출에서 모든 것을 만들어 가장자리를 만드는 것과 관련이 없다는 점에서 다릅니다. 이 경우 다음과 같은 경로를 생성하려고합니다.

A1 (date = 2014-01-01) ---> B < --- A2 (date = 2013-01-01)

그리고 A1과 A2 ID 만 포함 된 테이블을 반환하십시오.

나는처럼 보이는 MATCH 쿼리까지 일을 시작했습니다이 작동

MATCH {CLASS: A, AS: A1} -edgeTypeA-> 
    {AS: B} <-edgeTypeA- 
    {AS: A2, WHERE: {$matched.A1.Date=$currentMatch.Date} 
RETURN A1, B, A2 

을하지만, 그것은 단지 기본적으로 A1 및 A2는 A1과 A2가 동일한 경우를 포함하여 동일한 날짜 (있는 요소를 돌려주는 것 마디).

format()을 사용하여 날짜 필드의 일부를 추출 할 수 있다는 것을 알고 있습니다. 예를 들어 올해를 포함하는 문자열을 원하면 $ currentMatch.Date.format ('yyyy')를 사용하여 그러나 나는 아직도 나의 질문의 목적을 위해 날짜를 증가시키는 방법을 알아 내지 못했다.

+0

안녕하세요, Javascript 기능이 유용할까요? Thx –

+0

며칠 전에 이미 여기에 질문 한 것과 같은 질문입니까? http://stackoverflow.com/questions/39500535/orientdb-create-edge-between-two-nodes-with-the-same-day-of 년? –

+0

@ oleksandr-gubchenko 여전히 같은 문제입니다. 이전에 Alessandro의 회신을 보지 못했지만 작동하는 서버 측 기능으로 뛰어 들었지만 일부 서버 환경에서는 허용되지 않는 서버가 실행되어야합니다. 그래서 저는 자바 애플리케이션을 만들고 있습니다. 나는 조금 더 일반적인 것을 얻으려고 노력하고 있고 단지 하나가 OSQL 내에서 날짜 조작을 정확히하는 방법에 대한 아이디어를 얻고 싶다. 필자가 본 대부분의 예는 선험적으로 알려진 날짜 또는 날짜 범위를 가지고 있지만 경로 내의 상대 날짜를 기준으로 경로가 유효하다는 그래프 패턴에 신경을 썼습니다. – TxAG98

답변

1

제 이전 질문에서 what Alessandro did을보고 나서 작동 시켰습니다. 아카이브 목적으로 솔루션을 추가하고 있습니다. 다행스럽게도 OSQL 쿼리 내에서 날짜 조작을해야하는 사람들에게 도움이 될 수 있습니다. 여기

내가 함께 결국 무엇을 :

MATCH {CLASS: A, AS: A1} -edgeTypeA-> 
    {AS: B} <-edgeTypeA- 
    {AS: A2, WHERE: ($matched.A1.Date.format('yyyy').asInteger()=sum($currentMatch.Date.format('yyyy').asInteger(),-1) AND 
        $matched.A1.Date.format('MM-dd')=$currentMatch.Date.format('MM-dd')) } 
RETURN A1,A2 

나는 내 데이터에 대한 옳은 일을 얻을 :

+----+------+------+ 
|# |A1 |A2 | 
+----+------+------+ 
|0 |#49:30|#49:32| 
|1 |#55:44|#56:46| 
|2 |#53:0 |#53:2 | 
|3 |#55:20|#55:22| 
|4 |#49:42|#49:44| 
|5 |#50:32|#50:34| 
+----+------+------+ 

그것은 종류의 sum()에 전화를해야 할 많은 것 같은 느낌이 든다 및 asInteger()하지만 지금은 그것을 이해하고 함께 일할 수 있습니다.