내 Neo4j 2.0 서버 데이터베이스 포리스트, 즉 트리 집합이 있습니다. 내 유스 케이스 중 하나는 트리 노드의 임의의 서브 세트의 자식 노드를 얻는 것이다.Cypher : 한 번의 호출로 여러 개의 독립적 인 쿼리
는 예를 들어, 내가 루트 노드
root1 root2 root3 root4
지금은
root1
및
root4
의 자식 노드 원하는 있습니다.
그리고 어떤 아이들이 어떤 뿌리에 속해 있는지 알고 싶습니다.. 각 쿼리는 개별적으로 간단한 MATCH Cypher 쿼리입니다. 하지만 성능 향상을 위해 Neo4j 서버를 사용하기 때문에 데이터베이스 통화량을 낮게 유지하고 싶습니다. 따라서 나는 Cypher에게 "root1과 root4의 용어를 내게 주면서 어떤 노드가 결과의 어느 루트에 속해 있는지 알려주는 방법"을 생각하고 있습니다. 즉, 저는 일종의지도를 생각합니다. 또는 첫 번째 요소가 첫 번째 루트의 자식 노드이고 두 번째 요소가 두 번째 루트의 자식 노드 인 결과 집합의 모음입니다.
Cypher에서이 작업을 수행 할 수있는 방법이 있습니까? 다시 서버 플러그인으로 돌아 간다 고요?
감사합니다.
편집 :
명확히하려면 : 내 주요 관심사는 내가하는 루트에 속하는 아이들이 알 필요가 있다는 것입니다. 여기
create (r1:ROOT {name:"root1"}),
(r2:ROOT {name:"root2"}),
(c11:CHILD {name:"child1_1"}),
(c12:CHILD {name:"child1_2"}),
(c13:CHILD {name:"child1_3"}),
(c21:CHILD {name:"child2_1"}),
(c22:CHILD {name:"child2_2"}),
(c23:CHILD {name:"child2_3"}),
(r1)-[:HAS_CHILD]->(c11),
(r1)-[:HAS_CHILD]->(c12),
(r1)-[:HAS_CHILD]->(c13),
(r2)-[:HAS_CHILD]->(c21),
(r2)-[:HAS_CHILD]->(c22),
(r2)-[:HAS_CHILD]->(c23)
, 우리는 각각 세 자녀와 함께 root1
및 root2
를 얻을 : 예를 들어,이 명령에 의해 생성 된 작은 그래프를 고려한다.
것은 root1
의 자녀가 나는 다음과 같은 쿼리를 실행 것으로 활용하려면 다음
MATCH (r:ROOT)-[:HAS_CHILD]->c where r.name='root1' RETURN collect(c)
는 이제 루트
root1
의 자식을 알고있다. 질문은 다음과 같습니다.
root1
및
root2
의 자식을 쿼리하는 쿼리의 모양은 어떤 결과가 어떤 자식이 어떤 루트에 속하는 지의 연관성을 보여줍니다. 명확하게 쿼리가 있기 때문에
MATCH (r:ROOT)-[:HAS_CHILD]->c where r.name='root1' OR r.name='root2' RETURN collect(c.id)
두 뿌리의 아이들을 나에게 줄 것입니다. 그러나 지금 나는 어떤 뿌리가 어떤 아이들을 가졌는지 알 수 없을 것입니다. 그래서 내가 무엇을 할 수 있니?
하는 것은 문제가되지 않습니다 즉, 하나의 나무에 대한 쿼리를 수행하는 작업 어떻게 생겼어? 단일 루트 값을 속성 값으로 찾으면 아마도 값의 모음으로 많은 루트를 찾기 위해 그것을 수정할 수 있습니다. – jjaderberg
예, 자세한 내용을 알려 주시면 검색어를 작성해 드리겠습니다. –
귀하의 의견에 진심으로 감사드립니다. 아주 정교하지 않은 문제에 대한 사과를 받아 들여주세요. 지금은 더 명확 해지기를 바랍니다. – khituras