Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 배열의 한 요소만 슬라이스해 조회하는 쿼리 사용법

MongoDB $slice 연산자로 배열 요소 하나만 가져오기

MongoDB에서 배열에 담긴 데이터 중 일부만 조회하고 싶다면 $slice 연산자를 사용하면 됩니다. 이 글에서는 배열의 첫 번째 요소 하나만 슬라이스해 가져오는 방법을 실제 예제와 함께 단계별로 살펴보겠습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용해 컬렉션을 생성하고 문서를 삽입합니다.

> db.demo579.insertOne(
...    {
...       "_id" : 101,
...       "details" : { "FirstName" : "John" },
...       "Marks" : [ 56,78,90,34,45,74 ]
...    }
... );
{ "acknowledged" : true, "insertedId" : 101 }

2. 전체 문서 확인하기

find() 메서드를 사용해 컬렉션에 저장된 모든 문서를 조회해 보겠습니다.

> db.demo579.find().pretty();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{
    "_id" : 101,
    "details" : {
       "FirstName" : "John"
    },
    "Marks" : [
       56,
       78,
       90,
       34,
       45,
       74
    ]
}

Marks 필드에는 총 6개의 숫자가 배열 형태로 저장되어 있는 것을 확인할 수 있습니다.

3. $slice로 배열의 한 요소만 조회하기

이제 배열의 요소 중 하나만 슬라이스해 가져오는 쿼리를 작성해 보겠습니다. 두 번째 인자인 프로젝션 부분에서 Marks 필드에 $slice 값을 1로 지정하고, 불필요한 details와 _id 필드는 0으로 설정해 제외했습니다.

> db.demo579.find({},{Marks : {$slice : 1} ,"details":0,"_id":0})

쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "Marks" : [ 56 ] }

실행 결과를 보면 Marks 배열의 첫 번째 요소인 56만 반환된 것을 확인할 수 있습니다.

$slice 연산자 동작 방식 정리

$slice 연산자는 지정한 값에 따라 다르게 동작합니다.

양수(n): 배열의 처음부터 n개의 요소를 반환합니다. 예를 들어 $slice: 3을 지정하면 앞의 3개 요소가 조회됩니다.
음수(-n): 배열의 끝에서 n개의 요소를 반환합니다. 예를 들어 $slice: -2를 지정하면 마지막 2개 요소가 조회됩니다.

이처럼 $slice 연산자를 활용하면 배열 전체가 아닌 필요한 만큼의 요소만 효율적으로 가져올 수 있어, 대용량 배열 데이터를 다룰 때 응답 크기를 줄이고 성능을 개선하는 데 유용합니다.