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

MongoDB에서 $slice 연산자로 필드의 배열 값 개수 제한하기

MongoDB에서 배열 필드에 저장된 값의 개수를 제한하고 싶다면 $slice 프로젝션 연산자를 사용하면 됩니다. $slice는 쿼리 결과에서 배열 필드의 일부 요소만 반환하도록 지정할 수 있어, 대용량 배열 데이터 중 필요한 부분만 효율적으로 조회할 때 유용합니다.

예제 컬렉션 생성하기

먼저 데모용 컬렉션을 만들고 문서를 하나 삽입해 보겠습니다.

> db.demo173.insertOne({"ListOfValues":[10,40,100,560,700,900]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e383a4f9e4f06af551997e4")
}

삽입된 문서 확인하기

find() 메서드를 사용해 컬렉션의 모든 문서를 조회합니다.

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

위 쿼리는 다음과 같은 결과를 출력합니다.

{
   "_id" : ObjectId("5e383a4f9e4f06af551997e4"),
   "ListOfValues" : [10, 40, 100, 560, 700, 900]
}

현재 ListOfValues 필드에는 총 6개의 값이 저장되어 있습니다.

$slice로 반환되는 값의 개수 제한하기

이제 $slice 연산자를 사용해 배열에서 마지막 2개의 값만 가져오는 쿼리를 실행해 보겠습니다. 음수 값을 지정하면 배열의 끝에서부터 해당 개수만큼 요소를 반환합니다.

> db.demo173.find({}, { "ListOfValues": { "$slice": -2 } });

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5e383a4f9e4f06af551997e4"), "ListOfValues" : [ 700, 900 ] }

$slice 동작 방식 정리

  • 양수(n): 배열의 앞에서부터 n개의 요소를 반환합니다. 예: { "$slice": 2 } → [10, 40]
  • 음수(-n): 배열의 끝에서부터 n개의 요소를 반환합니다. 예: { "$slice": -2 } → [700, 900]

이처럼 $slice를 활용하면 전체 배열을 가져오지 않고도 필요한 범위의 값만 선택적으로 조회할 수 있어, 네트워크 트래픽과 애플리케이션 메모리 사용량을 줄이는 데 도움이 됩니다.