2017-05-16 11 views
0

나는 다음에 찾고 있어요 : 나는 다음과 같은 반환 "쿼리"의 값을 마련하기 위해 노력했다네비게이션 루비 보석에 관계 및 날짜 속성별로 검색하는 사이퍼 쿼리를 어떻게 제공합니까?

https://github.com/maxdemarzi/neography/wiki/Scripts-and-queries

: 관계가

  • 노드를 workingOn
  • 만든 날짜가 어제입니다 (날짜 유형이있는 것처럼 보이지 않아서 획기적인 시간의 정수를 사용 했습니까?)
  • 속성을 반환하십시오,662,

내가 시도 :

start n=node(id) # where id is the reference node 
match n-[:workingOn]-() 
where has(n.date < Date.now.to_i and n.date > Yesterday.to_i) # yesterday is a Date for yesterday 
return n 

가 해결 : 나는 그것을 해결 것으로 표시 문제로부터 통찰력을 가지고,하지만 내가 한 것은 쿼리 문자열을 작성했고 채울 보간을 사용 그것은 필요한 값들과 함께. 예 : query = "Match (n) -[#{relationship}]-(n2)....etc

+0

어떤 Neo4j 버전을 사용하고 있습니까? 그것은 오래된 구문이지, 그렇지 않습니까? –

답변

1

오래된 Cypher 구문을 사용하고 있습니다. neo4j (3.1+)의 최신 버전을 사용하고 있고 적절한 APOC 플러그인을 설치 한 경우 다음이 작동합니다. (I 쿼리를 만들 때 id 매개 변수가 전달되는 것을 가정한다. 그렇지 않을 경우, 실제 ID 값 $id를 교체합니다.)

WITH timestamp() AS now 
MATCH (n) 
WHERE ID(n) = $id AND 
    (n)-[:workingOn]-() AND 
    apoc.date.convert(apoc.date.convert(now, 'ms', 'd') - 1, 'd', 'ms') < n.date < now 
RETURN n; 

그것은 밀리 초 (현재 시대의 시간을 얻을 수있는 timestamp() 함수를 사용하여), APOC 함수 apoc.date.convert을 두 번 사용하여 어제의 시작의 기본 시간을 가져옵니다.

는 또한 WHERE 절에 (n)-[:workingOn]-() 패턴으로 이동되도록 각 n 단지 하나의 행이 생성은 해당 n 다수에게 workingOn 관계를 갖는 경우에도.

(당신이 n 노드의 value 속성을 반환하고 싶었 경우 RETURN 절은 실제로 RETURN n.value이 될 것입니다.)

[업데이트]

GrapheneDB는 APOC 같은 플러그인을 지원합니다. See their documentation.

네이티브 네오 ID로 검색하려면 먼저 ID 값을 알아야합니다. 먼저 다른 쿼리를 수행해야 할 수도 있습니다. 그러나 고유 ID 대신 고유 한 ID를 지정하고 사용하는 것이 더 좋을 수 있습니다. 원래 ID가 재활용되면 새로운 노드에 재활용되고 사용될 수 있기 때문입니다.

+0

어떻게 APOC를 연결합니까? Graphene DB를 사용하고 있습니까? 그것 없이는 다른 방법이 있을까요? – Angela

+0

또한 빠른 관련 질문 : 문서에 노드 ID가 임시라고 표시되므로 먼저 $ ID 값을 할당하기 위해 클라이언트 ID를 검색해야합니까? – Angela

+0

업데이트 된 답변보기 – cybersam