2013-08-23 3 views
3

나는 사이퍼 쿼리를 디자인하는 데 어려움을 겪고 있습니다.neo4j cypher : 연결된 목록을 쿼리하는 방법

나는 그래프 데이터

(starting_node)-[:last]->(data1)-[:previous]->(data2)-[:previous]->(data3)->... 

사용 시간에 일부 데이터를 기록 구조, 데이터 노드의 각 날짜를 가지고, 나는 합계를 속성과 일부 데이터가 있습니다.

예를 들어 지난 주에 어떤 일이 있었는지 질문하고 싶다고 가정 해 봅시다. 가까이 내가 가진 내가 옳은 길을 얻을, 나는 또한 (... 1 일 전, 3 일 전에서 등) 모든 중간 경로를 얻을, 불행하게도

start n= ... // definition of the many starting nodes here 
match n-[:last]->d1, path = d1-[:previous*0..7]->dn 
where dn.date > some_date_a_week_ago 

처럼 뭔가를 조회하는 것입니다.

많은 시작 노드가 있으므로 가능한 많은 경로 길이 때문에 쿼리에서 가장 긴 경로를 요청할 수 없습니다. 또한 dn.datedate_a_week_ago과 다를 수 있습니다 (이번 주에만 데이터 노드가 하나 있고 지난 달에 하나의 데이터 노드가있는 경우 예상 경로 길이는 1입니다).

내 검색어에서 중간 경로를 필터링하는 방법에 대한 팁이 있습니까?

미리 감사드립니다.

ps : 그건 그렇고, 나는 그래프 모델링에 대해 아주 새로운데, 필요할 경우 그래프 구조를 변경하는 데 필요한 모든 대답에 관심이있을 것입니다.

답변

3

당신은 당신의 경로에 추가 점 "dnnext"을 추가하고, "DN"을 보장하는 조건을 추가 할 수 있습니다 condifition을 satisfis 마지막,

내가 찾던 정확히 무엇
start n= ... // definition of the many starting nodes here 
match n-[:last]->d1, path = d1-[:previous*0..7]->dn-[:previous*0..1]->dnnext 
where dn.date > some_date_a_week_ago and dnnext < some_date_a_week 
+0

이며, 감사 ! – aherve