에 도입된 주요 기능 중 하나는 카우치베이스 라이트 2.0를 기반으로 하는 새로운 쿼리 인터페이스입니다. N1QL는 JSON용 SQL을 확장하는 Couchbase의 선언적 쿼리 언어입니다. SQL에 익숙하다면 새로운 API의 의미를 쉽게 이해할 수 있을 것입니다. 이전 글에서 인터페이스의 기본 사항을 다루었습니다. 블로그 게시물. 배열은 JSON으로 데이터를 모델링하는 데 필수적인 구성 요소입니다. 이 블로그 게시물에서는 새로운 API를 사용하여 배열 컬렉션을 쿼리하는 방법에 대해 설명합니다.

이 블로그는 기본 사항을 숙지하고 있다고 가정하고 있으므로 아직 숙지하지 않았다면 다음을 검토하세요. 이전 게시물 를 먼저 표시합니다. 게시물의 마지막 섹션에는 다른 관련 검색어 블로그에 대한 링크가 나열되어 있습니다.

Couchbase Mobile 2.0 사전 릴리스 빌드는 다음에서 다운로드할 수 있습니다. 다운로드 페이지로 이동합니다.

배경

1.x 버전의 Couchbase Mobile을 사용 중이라면 다음과 같은 내용을 잘 알고 계실 것입니다. 맵 보기 를 사용하여 인덱스와 쿼리를 만들 수 있습니다. 2.0에서는 더 이상 뷰와 맵 함수를 만들 필요가 없습니다! 대신, 간단한 인터페이스를 통해 인덱스를 생성하고 쿼리 빌더 인터페이스를 사용해 쿼리를 구성할 수 있습니다. 새로운 쿼리 인터페이스는 사용하기 더 간단하고 훨씬 더 강력합니다. 이 글에서 몇 가지 기능을 살펴보겠습니다.

샘플 프로젝트

여기서 설명하는 예제에서는 iOS용 Swift를 사용하지만, 몇 가지 사소한 차이를 제외하면 동일한 쿼리 인터페이스가 Android 및 Windows 플랫폼에서도 지원된다는 점에 유의하세요. 따라서 약간의 수정만 하면 다른 플랫폼에서 작업할 때 이 글의 쿼리 예제를 재사용할 수 있습니다.

샘플 Swift 프로젝트에 관심이 있다면 아래 지침을 따르세요.

  • GitHub에서 iOS Swift 플레이그라운드 복제하기

  • 해당 항목의 설치 지침을 따르세요. README 파일을 사용하여 플레이그라운드를 빌드하고 실행합니다.

샘플 데이터 모델

당사는 다음 위치의 여행 샘플 데이터베이스를 사용합니다. 여기

샘플 데이터 세트에는 다음과 같이 여러 유형의 문서가 포함되어 있습니다. 유형 속성을 추가합니다. 다음과 같은 문서에 초점을 맞출 것입니다. 유형 "호텔" . JSON 문서 모델은 아래와 같습니다. 간결성을 위해 아래 모델에서 일부 속성은 생략했습니다.

특히 이 모델에는 중첩된 컬렉션이 포함되어 있습니다. 공개_좋아요 그리고 리뷰. 다음 섹션의 쿼리에서는 이러한 중첩된 컬렉션을 다룹니다.

** 아래의 각 쿼리 예제는 위의 모델을 참조하세요. **

데이터베이스 핸들

아래 쿼리에서는 다음과 같이 데이터베이스 API를 사용하여 CouchbaseLite 데이터베이스를 열거나 생성합니다.

색인

읽기 쿼리 속도를 높이려면 쿼리할 속성에 인덱스를 만들면 됩니다. 대규모 데이터 세트에서 성능 향상은 상당할 것입니다. 물론 인덱스를 저장하기 위해 필요한 스토리지가 증가하고 쓰기 성능에도 영향을 미칠 수 있다는 점에 유의하세요. 따라서 너무 많은 인덱스를 만들지 않도록 주의하세요.

다음 예제에서는 ValueIndex 에서 유형 문서의 속성

다음 예제에서는 ValueIndex on 유형 그리고 이름 문서의 속성

배열 봉쇄

아래 쿼리는 ids, 이름 그리고 공개_좋아요 속성이 있는 문서의 공개_좋아요 배열 속성의 "호텔" 유형 문서에는 "코린 힐". 이를 위해 **ArrayFunction.contains** 함수 표현식은 공개_좋아요 배열입니다.

배열 크기

아래 쿼리는 ids, 이름 속성 및 크기공개_좋아요 배열 속성의 "호텔" 유형 문서에 저장합니다. 이를 위해 **ArrayFunction.length** 함수 표현식은 공개_좋아요 배열을 사용하여 배열의 크기를 구합니다.

또한 다음을 사용하고 있습니다. as 표현식을 alias 배열 개수 값을 NumLikes. 우리는 별칭 에 대한 이전 블로그 게시물에서 쿼리 기본 사항에 대해 설명했습니다. 쿼리 결과를 별칭으로 지정하지 않는 경우 배열 길이 표현식을 사용하는 경우 속성 키는 $1 는 직관적이지 않습니다.

배열 멤버 평가

동안 ArrayFunction.contains 함수 표현식을 사용하면 주어진 배열에 특정 값이 포함되어 있는지 확인할 수 있습니다. in 배열 표현식을 사용하여 배열의 일부 또는 모든 멤버를 지정된 기준에 따라 평가할 수 있습니다. 만족 표현식을 추가하세요. 이는 강력한 문서 필터링 기능입니다.

그리고in표현식은 any, 모든 또는 anyAndEvery 정량화된 연산자 배열 표현식 를 사용하여 배열 객체의 일부, 모든 또는 모든/모든 요소를 평가할 수 있습니다.

다음 쿼리는 다음과 같은 문서를 반환합니다. any 값의 공개_좋아요 배열은 "Corr" 문자로 시작합니다.

    1. 의 모든 요소를 나타내기 위해 "likedby"라는 이름의 변수를 선언합니다. 공개_좋아요 배열
    2. 그리고 any ArrayExpression이 나타내는 배열 요소가 좋아요 변수가 같은 표현식입니다. The 같은 표현식은 'likedby' 변수로 표시되는 항목의 값이 'Cor'로 시작하는지 확인합니다.

인덱싱 배열

특정 인덱스에서 요소를 쿼리할 수도 있습니다. 다음 쿼리는 이름 의 첫 번째 멤버이자 공개_좋아요 모든 "호텔" 문서의 배열 속성

중첩 배열 평가하기

멤버를 중첩 배열로 평가할 수 있습니다. 이를 위해 키 경로 를 변수 표현식에 추가합니다. 중첩 배열은 한 단계 깊이여야 합니다.

다음 쿼리는 다음과 같은 문서를 반환합니다. any 중첩된 값의 평가 배열에는 전체 속성 등급이 4보다 크거나 같아야 합니다.
위의 데이터 모델에서 알 수 있듯이 'reviews' 속성에는 여러 개의 개체가 들어 있습니다. 각 객체에는 중첩된 평가 배열을 포함하는 전체 속성입니다.

  1. 의 요소를 나타내는 변수를 선언합니다. review.ratings.Overall 배열
  2. 의 모든 요소를 나타내는 변수를 선언합니다. 리뷰 배열
  3. 그리고 any 표현식이 나타내는 배열 요소가 리뷰 변수가 비교 표현식입니다. The 비교 표현식의 값을 확인합니다. 전체 속성의 평가 변수로 표현되는 객체의 배열이 4보다 크거나 같아야 합니다.

제한 사항

배열 조작 기능은 N1QL만큼 광범위하지 않습니다. 기능 세트. 하지만 좋은 출발점입니다. 이러한 기능은 향후 Couchbase Mobile 릴리스에서 제공될 수 있습니다.

따라서 현재로서는 언어의 컬렉션 처리 기능을 사용하여 배열 결과를 조작하는 것은 앱의 몫입니다.

이 예제를 간단히 살펴보겠습니다.

  • 데이터 모델을 참조하여 다음과 같이 결정하고 싶다고 가정해 보겠습니다. 최소 청결 호텔에 대한 리뷰를 기반으로 해당 호텔에 대한 평점을 매깁니다.

위의 모델에서 청결 속성은 평가 의 멤버인 각 객체에 포함된 속성입니다. 리뷰 배열입니다.

이를 위해 Couchbase Lite 쿼리를 수행하여 다음을 가져올 수 있습니다. 리뷰 지정된 Id를 가진 호텔의 배열 속성을 다음과 같이 지정합니다.

그리고 결과 집합 위의 쿼리에 대한 응답은 단일 요소가 있는 배열이 될 것입니다. 이 요소는 지정된 Id에 대한 "호텔" 문서에 해당합니다.

이제 앱에서 반복하는 로직을 구현해야 합니다. 리뷰 배열과 배열의 각 멤버에 대해 평가 속성 및 해당 청결 값입니다.

다음은 신속하게 처리할 수 있는 한 가지 방법입니다.

  • 먼저 결과 집합을 반복하여 'reviews' 속성의 값을 추출합니다.

루프 처리 후 '일치' 배열은 아래와 같은 배열이 될 것입니다. 리뷰에 해당하는 중첩 배열이 포함된 배열이 될 것입니다.

  • 그런 다음 다음과 같은 스위프트 언어 기능을 사용할 수 있습니다. 플랫맵 그리고 지도 를 사용하여 결과 배열을 처리하여 주어진 호텔의 최소 '청결도' 등급을 도출합니다.

다음과 같은 함수형 구조를 지원하는 언어에서도 비슷한 작업을 수행할 수 있습니다. 플랫맵 그리고 지도.

다음 단계

이 블로그 게시물에서는 Couchbase Mobile 2.0의 새로운 쿼리 API를 사용하여 배열 컬렉션 유형을 처리하는 방법을 살펴봤습니다. 이것은 시작에 불과합니다. 향후 릴리스에서 더 많은 기능이 추가될 예정입니다. 사전 릴리스 빌드는 다음에서 다운로드할 수 있습니다. 다운로드 페이지로 이동합니다.

다음은 관심을 가질 만한 다른 Couchbase 모바일 쿼리 관련 게시물입니다.
- 이 블로그 게시물 에서는 쿼리 API의 기본에 대해 설명합니다.
- 이 블로그 게시물 에서 전체 텍스트 검색 기능에 대해 설명합니다.
- 이 블로그 게시물 조인 쿼리를 수행하는 방법에 대해 설명합니다.

질문이나 피드백이 있으면 아래에 댓글을 남기거나 트위터로 언제든지 문의해 주세요. @rajagp 또는 이메일을 보내주세요. priya.rajagopal@couchbase.com. . 카우치베이스 포럼 를 통해 질문할 수 있습니다.

작성자

게시자 프리야 라자고팔, 제품 관리 부문 선임 이사

프리야 라자고팔은 클라우드 및 엣지용 개발자 플랫폼을 담당하는 Couchbase의 제품 관리 수석 이사입니다. 그녀는 20년 이상 여러 기술 및 제품 리더십 직책을 맡으며 전문적으로 소프트웨어를 개발해 왔으며, 그중 10년 이상은 모바일 기술에 집중했습니다. TISPAN IPTV 표준 대표로서 IPTV 표준 사양에 핵심적인 기여를 했습니다. 네트워킹 및 플랫폼 보안 분야에서 22개의 특허를 보유하고 있습니다.

댓글 남기기