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() 메서드와 pretty() 메서드를 함께 사용하면 컬렉션 내 모든 문서를 보기 좋게 출력할 수 있습니다.

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

출력 결과

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

현재 Values 필드에는 총 6개의 값이 순서대로 저장되어 있습니다.

3. $slice 연산자로 마지막 두 값 조회하기

배열의 마지막 두 값을 가져오려면 find() 메서드의 프로젝션 부분에서 $slice 연산자에 음수(-2)를 지정하면 됩니다. 음수를 사용하면 배열의 끝에서부터 지정한 개수만큼의 요소가 반환됩니다.

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

출력 결과

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

$slice 연산자 동작 원리 정리

  • 양수 값 (예: $slice: 2) — 배열의 처음부터 지정한 개수만큼 요소를 반환합니다.
  • 음수 값 (예: $slice: -2) — 배열의 끝에서부터 지정한 개수만큼 요소를 반환합니다.

위 실행 결과를 보면 전체 6개의 값 중 마지막 두 값인 100098만 반환된 것을 확인할 수 있습니다. 이처럼 $slice 연산자는 별도의 복잡한 집계 파이프라인 없이도 원하는 범위의 배열 요소를 손쉽게 추출할 수 있는 유용한 기능입니다.