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

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

MongoDB에서 특정 필드에 저장된 배열 값의 개수를 제한하고 싶다면 $slice 연산자를 사용하면 됩니다. $slice는 쿼리 결과에서 배열 필드가 반환할 요소의 개수를 지정할 수 있어, 대용량 배열 데이터 중 일부만 확인할 때 매우 유용합니다.

1. 샘플 컬렉션 생성

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

> db.numberOfValuesDemo.insertOne({"Values":[100,200,300,900,1000,98]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cefb736ef71edecf6a1f6ab")
}

2. 삽입된 문서 확인하기

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

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

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

출력 결과

{
   "_id" : ObjectId("5cefb736ef71edecf6a1f6ab"),
   "Values" : [
      100,
      200,
      300,
      900,
      1000,
      98
   ]
}

현재 Values 필드에는 총 6개의 값이 들어 있습니다.

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

이제 $slice 연산자를 사용하여 조회 시 배열에서 처음 2개의 값만 가져오도록 제한해 보겠습니다.

> db.numberOfValuesDemo.find({},{ "Values": { "$slice": 2 } } );

출력 결과

{ "_id" : ObjectId("5cefb736ef71edecf6a1f6ab"), "Values" : [ 100, 200 ] }

결과를 보면 원래 6개였던 값이 처음 2개(100, 200)만 반환된 것을 확인할 수 있습니다.

$slice 사용 팁

  • 양수(n): 배열의 앞에서부터 n개의 요소를 반환합니다. 예: { $slice: 2 } → 첫 번째, 두 번째 요소
  • 음수(-n): 배열의 뒤에서부터 n개의 요소를 반환합니다. 예: { $slice: -2 } → 마지막 두 요소인 1000, 98 반환
  • [skip, limit] 형식: 건너뛸 개수와 가져올 개수를 함께 지정할 수 있습니다. 예: { $slice: [1, 2] } → 첫 번째 요소를 건너뛰고 그다음 2개(200, 300) 반환

이처럼 $slice 연산자를 활용하면 배열 전체를 가져오지 않고 필요한 만큼의 데이터만 효율적으로 조회할 수 있습니다.