2
Neo4j가 자신과 관계가있는 노드와 관련된 쿼리를 처리하는 방법을 알기 위해 간단한 예제를 설정하고 Cypher에게 모든 경로를 제공 할 수 없습니다. 여기 Cypher 쿼리가 모든 예상 경로를 반환하지 않음
내 데이터의 :CREATE (A {name:'A'}), (B {name:'B'}), (C {name:'C'})
CREATE
(A)-[:REL]->(A),
(A)-[:REL]->(B),
(A)-[:REL]->(C),
(B)-[:REL]->(A),
(B)-[:REL]->(B),
(B)-[:REL]->(C),
(C)-[:REL]->(A),
(C)-[:REL]->(B),
(C)-[:REL]->(C)
그리고 여기에 내가 뭘 쿼리의 :
A, A, A, B
A, A, B, B
A, A, C, B
A, B, A, B
A, B, B, B
A, B, C, B
A, C, A, B
A, C, B, B
A, C, C, B
하지만 제가받은 것은 :
MATCH p = (x)-[:REL*1..3]->(y)
WHERE x.name='A' AND y.name='B' AND LENGTH(p) = 3
RETURN nodes(p)
내 예상 결과
는[(3 {name:"A"}), (2 {name:"B"}), (1 {name:"C"}), (2 {name:"B"})]
[(3 {name:"A"}), (1 {name:"C"}), (3 {name:"A"}), (2 {name:"B"})]
[(3 {name:"A"}), (1 {name:"C"}), (2 {name:"B"}), (2 {name:"B"})]
[(3 {name:"A"}), (1 {name:"C"}), (1 {name:"C"}), (2 {name:"B"})]
[(3 {name:"A"}), (3 {name:"A"}), (2 {name:"B"}), (2 {name:"B"})]
[(3 {name:"A"}), (3 {name:"A"}), (1 {name:"C"}), (2 {name:"B"})]
그래서 내가받지 못하고있어 경로는 다음과 같습니다
A, A, A, B
A, B, B, B
A, B, A, B
는 사람이 어떤 통찰력을 가지고 있습니까? 사전에 http://console.neo4j.org/?id=4srv4h
감사 :
는 여기 콘솔입니다.
아, 맞아. 감사합니다 웨스. 내가 원하는 결과를 얻기 위해 어떤 트릭을 알고 있습니까? 이전 상태 (노드)로 들어갈 수있는 확률 과정을 모델링하려고합니다. 따라서 내 쿼리가 트래버스에서 관계를 반복 할 수있는 것이 바람직합니다. 그렇지 않다면이 아이디어를 다시 생각해야 할 것입니다. :) –
경로가 얼마나 오래 있는지 알고 계십니까? WITH와 헤어질 수 있습니다. 동작이 이와 같은 이유는주기가있는 무한 경로를 방지하기 위해서입니다. Rels는 한 번만 통과 할 수 있습니다. –
http://console.neo4j.org/r/sl0z99 –