내 그래프 모델에 같은 유형의 다른 노드와 부모/자식 관계가있는 유형 A의 노드가 있다고 가정 해 봅니다. 나는 사이퍼 문 Neo4j OGM 형식의 쿼리로 관련 개체를 필터링하는 방법은 무엇입니까?
MATCH (node:A) WHERE ... OPTIONAL MATCH ... RETURN node, ... ORDER BY node.id ASC LIMIT 100
같은 지금 어디
session.query(A.class, cypher, parameters)
(페이징, 필터링, 선택 일치 등을 위해) 복잡한 쿼리를 실행하기 위해 다음과 같은 세션 방법을 사용하고
@NodeEntity(label = "A")
class A {
@Relationship(type = "PARENT")
private A parent;
// other relations to different types
...
}
, 또한 각 결과 (유형 A도)에 대한 부모 노드를 가져 오려고합니다. 이를 위해, 나는 순진하게도 볼 것으로 예상 무엇
MATCH (node:A) WHERE ... OPTIONAL MATCH parentRels=(node)-[parentRel:PARENT*1..]->(:A) RETURN node, collect(parentRel) ORDER BY node.id ASC LIMIT 100
내 쿼리를 확장 각 상위 필드가 잘 뿌리까지 가득 객체 내 동일한 목록 A가있다. Neo4j에서 반환 한 결과는 정확하지만 OGM에서 반환 한 매핑 결과는 부모 노드가 올바르게 채워진 상태에서 관심있는 노드가 포함되어 있지 않고 부모 노드가 모두 포함되기 때문에 쓸모가 없습니다. 결과 목록에!
그래서 관심 노드가있는 결과 열 (위의 예에서 '노드')을 지정할 수있는 숨겨진 OGM 기능을 찾기 시작했으나 가능하지 않습니다. 내가 볼
유일한 해결 방법은 다음과 같습니다
- 별도의 쿼리 :(에서 부모 노드를 가져
- 매핑 자신 :(:(
- 기반으로 별도의 쿼리 및 필터 관련 ID를 가져 오기를 할 그에.
어쩌면 누군가가 더 나은 솔루션을 본다?
답장을 보내 주시면우리가 실제로 동일한 노드 유형을 말하는 것처럼 다른 레이블을 사용하는 것은 옵션이 아닙니다. 당신의 두 번째 옵션에 대해서, 만약 내가 관계를 반환한다면, 나는 노드 afaik를 탐색 할 수 없을 것입니다. 나는이 같은 고립 된 유스 케이스처럼 보이지 않는 문제를 채울거야 ... – Christian
https://github.com/neo4j/neo4j-ogm/issues/351 – Christian
@ 크리스티안 방금 다른 방법으로 기억하고있다 .. 참조하십시오 편집 된 대답 –