2014-12-12 2 views
1

상황 : 주 그래프에 각각 하나의 연결이있는 수많은 종점이있는 그래프. 이 연결은 주 그래프에 합류하기 전에 끼어 드는 여러 개의 노드 -> 관계 -> 노드을 트래버스 할 수 있습니다. 각 노드가 연결되는 마지막 노드에는 특정 속성이 있습니다.Neo4j - 이전 일치의 각 결과에 일치 적용

나는이 경로를 따라 내려가는 쿼리를 통해 궁극적으로 주 그래프와 결합하는 노드를 찾습니다. 끝점 노드의 목록을 반환하는 또 다른 쿼리가 있습니다. 쿼리 2의 노드 목록을 사용하여 쿼리 1에 공급하면 쿼리 2의 모든 구성원에 대해 쿼리 1의 결과를 얻을 수 있습니까?

이상적으로 나는 FOREACH 같은 것을 원하지만 쿼리 1은 경기 문으로 시작으로 그 밖입니다. 변경 사항이 없습니다. create outer_list -> each outer_list_member -> run next query and return single result -> repeat with next list_member


  • 쿼리 1에 가깝다 뭔가 : - : match node_list = (n {property of all end nodes})

I match p=(n {individual end node property})-[r: JOINS*1..5]-(m { joining node property }) return n.name, length(p) as len, m.name order by len limit 1
이 나에게 (최단 경로를 통해) 최종 노드와 결합 노드

  • 쿼리 2를 제공 쿼리 1을 실행하고 지정된 최종 노드의 고유 속성 ("id")을 수동으로 지정하면 올바른 결과를 얻을 수 있습니다. 모든 끝 노드와 연결 노드의 목록을 만들고 싶습니다.

  • +0

    혹시이 방법을 알아 냈습니까? 나는 비슷한 필요성이있다. – David

    +0

    IIRC가 잠시 동안 이었지만 코드에서 그랬습니다. 나는 순수한 cypher 방법을 찾는 것을 기억하지 못한다. – ethrbunny

    +0

    좋습니다, 감사합니다. 나는 그것을해야 할지도 모른다고 생각하고 있었다./ – David

    답변

    2

    Cypher의 WITH 절은 하나의 쿼리를 다른 쿼리로 보내는 데 매우 유용합니다. 어쩌면 유용할까요?

    http://neo4j.com/docs/stable/query-with.html

    +0

    * with * 사용하기 나는 2 -> 1의 결과를 확실히 통과시킬 수 있지만, 각 2 차 일치에 'limit 1'을 사용하는 것을 막는다. 내가 1을 제한하면 단 하나의 행이 생깁니다. '제한 1'이 없으면 나는 모든 조합을 얻는다. 나는 각각에서 하나의 결과를 원한다. – ethrbunny

    +1

    잘 모르겠다.하지만 각 집합에서 하나의 결과 만 반환하도록 WITH에 집계 함수가 필요할까요? –

    0

    최단 경로는 정확히 하나 개의 경로 각각 반환합니다.

    match (n:Label {prop:value}) 
    match p=shortestPath((n)-[: JOINS*1..5]-(m:Label2 {prop2:value2}) 
    return n.name, length(p) as len, m.name 
    

    (짧은 그렇지 않으면 당신은 또한 수집 표현과 같은 경로를 사용할 수 있으며, 단지 head((n1)-[*..5]-(n2))

    비용이 많이 드는 작업을 반환하지만 당신은 시작 노드에서 다음 집계, 경로 길이로 데르와 수집의 첫 번째 요소를 취할 수 있습니다 경로가 목록의 첫 번째 항목 임).

    ... 
    with n, p 
    order by length(p) 
    return n.name, head(collect(p)) 
    
    +0

    각각의 경우 하나의 경로 만있을 수 있으므로 * 가장 짧은 *을 찾는 문제가 아닙니다. * 가장 가까운 * 또는 아마도 * 다음 *을 찾는 것이 더 낫습니다. – ethrbunny

    관련 문제