2014-12-02 6 views
1

아래 쿼리를 실행할 때 쿼리 1은 모든 문서의 모든 범주 라벨을 반환하는 결과를 생성합니다. 문서는 여러 범주를 가질 수 있으므로 이동 중에도 범주를 수집 할 수 있습니다.Neo4J 쿼리가 여러 개의 일치 항목을 결합하여 결과를 반환합니다.

START doc = node:entities(type = "document-link") 
MATCH category-[:category]-doc<-[:`document-link`]-id 
RETURN 
    doc.title as title, 
    COLLECT(COALESCE(category.category, "")) as categories 

쿼리 2는 모든 문서에 대해 문서의 결과 반환 언어를 생성합니다. 문서에는 하나의 언어 유형 만있을 수 있습니다.

START doc = node:entities(type = "document-link") 
MATCH lan-[:language]-doc<-[:`document-link`]-id 
RETURN 
    doc.title as title, 
    lan.language as language 

1과 2의 조인 인 쿼리 3은 빈 결과를 생성합니다. 누군가 내가 잘못하고있는 것을 강조 할 수 있습니까?

START doc = node:entities(type = "document-link") 
MATCH category-[:category]-lan-[:language]-doc<-[:`document-link`]-id 
RETURN 
doc.title as title, 
lan.language as language, 
COLLECT(COALESCE(category.category, "")) as categories 
+1

? 경기에서! on 속성은 버전 1.9 이전의 구식입니다. 2.1.6과 같은 최신 버전으로 업데이트하십시오. –

답변

1

세 번째 쿼리에서 처음 두 쿼리에서 수행하지 않는 범주와 언어 간의 관계가 일치합니다. 어때요? :

START doc = node:entities(type = "document-link") 
MATCH category-[:category]-doc<-[:`document-link`]-id 
MATCH doc-[:language]-lan 
RETURN 
doc.title as title, 
lan.language as language, 
COLLECT(COALESCE(category.category, "")) as categories 
+0

감사합니다. Btw, neo4j에서 디버깅을하고 있었는데 기존 사이퍼를 수정하려고하지만 디버거가 "?"을 사용할 때 불평합니다. 경기에서 옵션 경기를 사용하도록 추천하는 경우에도 "?" 또는 "!" 또한 실패하지만 코드에서 작동합니다. 예를 들어 범주에 null 필드가 있거나 제목이 비어있을 수 있고 null 대신 무언가를 삽입하고자하는 이유를 알고 있습니까? 사전에 도움을 주셔서 감사합니다. –

+0

작동하는 경우 동의하고 upvote 대답 :). 이 질문에 관해서는, 나는 완전히 확신하지 못합니다. 내가 아는 한, null 값 필드는 허용되지 않습니다. 아마 당신은 stackoverflow에 바로 여기에 추가 질문을 게시 할 수 있습니다 :) –

관련 문제