MongoDB 컬렉션의 마지막 객체 조회하기
MongoDB에서 컬렉션에 저장된 마지막 객체(문서)를 찾으려면 sort() 메서드로 데이터를 먼저 정렬한 뒤, limit() 메서드로 가져올 문서의 개수를 지정하면 됩니다. 마지막 객체 하나만 필요하다면 limit(1)을 사용하는 것이 핵심입니다.
일반적으로 ObjectId는 삽입 시점의 타임스탬프 정보를 포함하고 있기 때문에, _id 필드를 내림차순(-1)으로 정렬하면 가장 최근에 삽입된 문서가 맨 앞으로 오게 됩니다.
1단계: 컬렉션 생성 및 문서 삽입
먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입해 보겠습니다.
> db.demo141.insertOne({"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31c347fdf09dd6d08539ae")
}
> db.demo141.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31c34bfdf09dd6d08539af")
}
> db.demo141.insertOne({"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31c34ffdf09dd6d08539b0")
}
> db.demo141.insertOne({"Name":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31c352fdf09dd6d08539b1")
}2단계: find()로 전체 문서 확인
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo141.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e31c347fdf09dd6d08539ae"), "Name" : "Chris" }
{ "_id" : ObjectId("5e31c34bfdf09dd6d08539af"), "Name" : "David" }
{ "_id" : ObjectId("5e31c34ffdf09dd6d08539b0"), "Name" : "Bob" }
{ "_id" : ObjectId("5e31c352fdf09dd6d08539b1"), "Name" : "Mike" }3단계: 마지막 객체를 찾는 쿼리 실행
이제 sort()와 limit()을 조합하여 컬렉션의 마지막 객체를 조회하는 쿼리를 살펴보겠습니다.
> db.demo141.find().sort({_id:-1}).limit(1);실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e31c352fdf09dd6d08539b1"), "Name" : "Mike" }쿼리 동작 원리 정리
- sort({_id:-1}): _id 값을 내림차순으로 정렬하여 가장 최근에 삽입된 문서를 첫 번째 위치로 가져옵니다.
- limit(1): 정렬된 결과 중 첫 번째 문서 한 개만 반환하도록 제한합니다.
이처럼 두 메서드를 함께 사용하면 별도의 추가 필드 없이도 간단하게 컬렉션의 마지막 문서를 조회할 수 있습니다. 만약 특정 필드 기준으로 마지막 값을 구하고 싶다면, 해당 필드를 sort()의 기준으로 지정하면 됩니다.