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 ]
}마지막 두 값 가져오는 쿼리
배열의 마지막 두 값을 가져오려면 프로젝션 단계에서 $slice 연산자에 -2를 지정하면 됩니다. 음수 값은 배열의 끝에서부터 요소를 계산한다는 의미입니다.
> db.demo173.find({}, { "ListOfValues": { "$slice": -2 } } );실행 결과
위 쿼리를 실행하면 다음과 같이 배열의 마지막 두 값인 700과 900만 반환되는 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5e383a4f9e4f06af551997e4"), "ListOfValues" : [ 700, 900 ] }참고 사항
$slice 연산자는 다양한 방식으로 활용할 수 있습니다. 양수를 지정하면 배열의 처음부터, 음수를 지정하면 배열의 끝에서부터 요소를 가져옵니다. 또한 [건너뛸 개수, 반환할 개수] 형태로 지정하여 원하는 위치의 요소를 추출할 수도 있습니다.