2015-01-10 6 views
3

문서가 목록에 포함되어 있으며 일련의 문자열 값과 일치하는 문서를 쿼리해야합니다.목록에 포함 된 ArangoDB 쿼리 특성

내 문서 : 당신이 볼 수 있듯이

enter image description here

, 나는 정기적으로 문서를 가지고있다. 그 문서 안에는 문서 당 길이가 알려지지 않은 "카테고리"가 있습니다. 내부 카테고리에는 "확신"과 "제목"이 있습니다. ArrayList에있는 제목 목록과 일치하는 제목이있는 문서를 찾으려면 쿼리해야합니다. 내가 일하는 것이라고 생각 쿼리는 다음과 같습니다

FOR document IN documents FILTER document.categories.title IN @categories RETURN article

@categories는 제목의 목록이 ArrayList에 있습니다. ArrayList에있는 제목 중 하나라도 문서에 있으면 반환해야합니다.

이 쿼리는 null을 반환하는 것으로 보입니다. ArrayList를 내 문서의 "제목"필드와 비교하는 수준으로 떨어지고 있다고 생각하지 않습니다. [#]을 사용하여 "categories"목록에 액세스 할 수 있다는 것을 알고 있지만 "categories"에서 "title"을 검색하는 방법을 모르겠습니다.

답변

3

쿼리

document.categories이 스칼라 인 경우
FOR document IN documents 
    FILTER document.categories.title IN @categories 
    RETURN article 

작동,하지만 document.categories가 배열 인 경우는 작동하지 않습니다. 그 이유는 IN 연산자의 왼쪽에있는 배열이 자동으로 펼쳐지지 않기 때문입니다. 다음과 같이

쿼리가 재 작성 될 수있는 문서를 확인하는 방법은 다음과 같습니다 article라는 이름의 모음이없는 한

FOR document IN documents 
    FILTER document.categories[*].title IN @categories 
    RETURN document 

또는에서 별도로

FOR document IN documents 
    LET titles = (
    FOR category IN document.categories 
     RETURN category.title 
) 
    FILTER titles IN @categories 
    RETURN document 

, article를 알 수있을 것입니다. 아마도 document 또는 document.article을 나타내야합니다.