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

MongoDB에서 정렬과 limit()을 활용해 최신 N개의 레코드를 조회하는 방법

MongoDB에서 최신 N개의 레코드를 정렬하여 가져오려면 sort() 메서드와 limit() 메서드를 함께 사용하면 됩니다. 이때 limit()에 원하는 레코드 개수를 지정하면, 정렬된 결과 중 상위 N개의 문서만 반환됩니다.

1. 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용해 demo454 컬렉션에 여러 개의 문서를 삽입해 보겠습니다.

> db.demo454.insertOne({"ClientName":"Chris"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e7cce8cdbcb9adb296c95c0")
}
> db.demo454.insertOne({"ClientName":"John"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e7cce95dbcb9adb296c95c1")
}
> db.demo454.insertOne({"ClientName":"Bob"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e7cce9fdbcb9adb296c95c2")
}
> db.demo454.insertOne({"ClientName":"David"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e7ccea6dbcb9adb296c95c3")
}
> db.demo454.insertOne({"ClientName":"Mike"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e7cceafdbcb9adb296c95c4")
}

2. 전체 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.

> db.demo454.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e7cce8cdbcb9adb296c95c0"), "ClientName" : "Chris" }
{ "_id" : ObjectId("5e7cce95dbcb9adb296c95c1"), "ClientName" : "John" }
{ "_id" : ObjectId("5e7cce9fdbcb9adb296c95c2"), "ClientName" : "Bob" }
{ "_id" : ObjectId("5e7ccea6dbcb9adb296c95c3"), "ClientName" : "David" }
{ "_id" : ObjectId("5e7cceafdbcb9adb296c95c4"), "ClientName" : "Mike" }

3. sort()와 limit()으로 최신 N개 레코드 조회하기

이제 sort()와 limit()을 조합하여 특정 필드를 기준으로 내림차순 정렬한 뒤, 상위 3개의 레코드만 가져오는 쿼리를 살펴보겠습니다. ClientName 필드를 -1(내림차순)로 정렬하고 limit(3)으로 결과 개수를 제한합니다.

> db.demo454.find().sort({ClientName:-1}).limit(3);

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

{ "_id" : ObjectId("5e7cceafdbcb9adb296c95c4"), "ClientName" : "Mike" }
{ "_id" : ObjectId("5e7cce95dbcb9adb296c95c1"), "ClientName" : "John" }
{ "_id" : ObjectId("5e7ccea6dbcb9adb296c95c3"), "ClientName" : "David" }

핵심 정리

sort({필드명: -1})은 해당 필드를 내림차순으로 정렬하고, limit(N)은 정렬된 결과 중 처음 N개의 문서만 반환합니다. 두 메서드를 체이닝(chaining) 방식으로 연결하면 MongoDB에서 손쉽게 '최신순 상위 N개' 데이터를 조회할 수 있습니다. 오름차순 정렬이 필요한 경우에는 -1 대신 1을 사용하면 됩니다.