Couchbase를 둘러보던 중 포럼 Couchbase에서 배열 데이터에 대한 쿼리에 관한 질문을 받았습니다. 관계형 데이터베이스 출신인 저도 SQL로 복잡한 형식의 JSON 데이터를 쿼리하는 개념을 이해하는 데 어려움을 겪은 적이 있습니다.

이러한 임베디드 NoSQL 문서 내에서 어떻게 쿼리할 수 있을까요? 여러 가지 방법이 있으며, 그 중 특별히 어려운 방법은 없습니다. 몇 가지 복잡한 쿼리 가능성에 대해 살펴보겠습니다.

제가 우연히 발견한 질문이 궁금하신 경우 다음에서 확인할 수 있습니다. 여기. 사용자는 단일 문서에 대해 배열에 중첩된 객체를 쿼리하는 방법을 알고 싶어했습니다. 제안된 문서 모델은 이와 비슷해 보였습니다:

최종 목표는 쿼리에서 각 객체를 기반으로 하는 어디 중첩된 조건이 포함된 유형 속성입니다.

이를 수행하는 한 가지 방법은 다음과 같은 N1QL 쿼리를 작성하는 것입니다:

위의 쿼리에서 우리는 선택 라는 카우치베이스 버킷에서 포럼 를 사용하여 배열을 평평하게 만들고 UNNEST 키워드를 추가합니다. 평탄화된 결과 집합은 다음과 같이 보일 것입니다. 어디 조건:

그리고 어디 조건은 두 개의 결과가 아닌 단일 결과를 반환하며, 여기서 단일 결과는 게임 쿼리에 따라 입력합니다.

그렇다면 이 방법만이 우리가 방금 한 일을 달성할 수 있는 유일한 방법일까요? 절대 아닙니다!

다음 N1QL 쿼리를 작성합니다:

위의 쿼리에서 우리는 먼저 Couchbase에서 배열을 평탄화하지 않습니다. UNNEST 작업을 사용할 수 없습니다. 대신 다음 중 하나를 사용하고 있습니다. 수집 연산자 를 클릭하여 기준에 맞는 배열 항목을 찾습니다.

작업을 완료하는 다른 방법도 있나요? 물론 다른 방법도 있지만, 이 두 가지만으로도 N1QL을 사용하여 Couchbase에서 배열을 쿼리하고 UNNEST 키워드를 입력합니다.

N1QL에 대한 자세한 도움이 필요하면 다음을 참조하세요. 카우치베이스 개발자 포털 를 클릭하세요.

작성자

게시자 Nic Raboy, 개발자 옹호자, Couchbase

닉 라보이는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 그는 Java, JavaScript, Golang 및 Angular, NativeScript, Apache Cordova와 같은 다양한 프레임워크에 대한 경험이 있습니다. Nic은 웹 및 모바일 개발을 보다 쉽게 이해할 수 있도록 자신의 개발 경험에 대해 글을 쓰고 있습니다.

댓글 하나

  1. [...] 최근 기사에서 N1QL을 사용하여 Couchbase에서 배열을 평평하게 만들고 쿼리하는 방법에 대해 썼습니다. 이 글은 Couchbase 포럼에서 인기 있는 질문에서 영감을 얻었습니다. 게시 후 [...]

  2. 에릭발라웨이더 1월 31, 2023에서 12:35 오후

    이러한 결과를 배열로 중첩하는 데 사용할 수 있는 방법이 있나요? 예를 들어

    {
    "id": "order-1",
    "type": "주문",
    "items": [
    {
    "id": "포켓몬-블루",
    "type": "게임",
    "이름": "포켓몬 블루"
    }
    ]
    }

댓글 남기기