SQL++/N1QL 쿼리

임베디드 JSON 문서 배열 내에서 날짜 범위 쿼리하기. N1QL, Nodejs 및 Docker를 사용한 간단한 예제

문서 배열을 쿼리하고 색인하는 것은 Couchbase의 가장 강력한 기능 중 하나입니다. 특정 날짜 범위 내에서 배열 항목을 찾는 것은 일반적인 요구 사항입니다. 다음 사용 사례를 고려해 보세요.

사용자 스토리: "특정 날짜 범위 내의 배열 항목에 대한 범위 쿼리를 수행할 수 있도록 데이터베이스의 문서 내에 포함된 계정 기록 배열을 색인하고 싶습니다."

다음 json 구조를 고려하세요:

라는 배열이 있습니다. 계정 기록 를 사용하여 0-N 개의 항목을 포함할 수 있습니다. 특정 날짜 범위를 쿼리하고 싶으면 날짜 필드에 입력합니다.

다음을 사용하여 고유한 인덱스 항목을 만들었습니다. DISTINCT 각각에 대해 날짜 필드를 추가합니다. 즉, 클러스터에 있는 모든 문서에 대해 계정 기록 계정 기록 항목에 "" 필드가 있는 한 내 인덱스에 포함됩니다.날짜". 계정 기록 배열에 여러 유형의 항목이 있을 수 있으며 날짜 필드가 있는 항목만 포함되기를 원합니다. 날짜 필드가 없는 경우 인덱서는 해당 항목을 인덱스에 포함하지 않습니다. 이제 쿼리 술어에 날짜 범위를 포함할 수 있습니다:

쿼리에서 제가 가장 좋아하는 N1QL의 다른 기능 중 하나를 사용했습니다: UNNEST. 이를 통해 JSON을 형성하고 결과에 루트 문서 수준 필드를 다시 포함할 수 있습니다. 내 쿼리에서 반환되는 각 항목에는 내 술어의 날짜 범위 내에 있는 계정 기록 정보가 포함됩니다. 또한 이 정보를 보낸 문서의 이메일 주소도 포함되기를 원하며, 애플리케이션에서 이를 추출하기 위해 추가적인 JSON 구문 분석 로직을 작성하고 싶지 않습니다. 이것이 바로 unnest를 사용하는 힘입니다. 쿼리는 다음을 반환합니다:

사용해 보세요: Docker는 제가 개발 환경을 시작하는 데 가장 좋아하는 방법입니다. 위의 예제에 대한 사용하기 쉬운 리포지토리는 github에 있습니다: n1ql-query-nodejs . 도커 컴포즈를 사용하여 두 개의 서비스를 빌드합니다:

  1. 단일 노드 카우치베이스 클러스터 서비스입니다.
  2. 문서 배열에 대한 날짜 범위 쿼리를 비롯한 여러 예제에 대한 250,000개의 사용자 프로필과 인덱스로 Couchbase 클러스터를 프로비저닝하는 nodejs 서비스입니다.
이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 토드 그린스타인

토드 그린스타인은 카우치베이스의 솔루션 아키텍트입니다. Todd는 API 설계, 아키텍처, 데이터 모델링, nodejs 및 골랑 개발을 전문으로 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.