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

Java에서 MongoDB 컬렉션 조회 시 레코드 수를 제한하는 방법 – limit() 메서드 완벽 가이드

MongoDB 컬렉션에서 레코드를 조회할 때, 결과로 가져올 문서의 개수를 제한해야 하는 경우가 자주 발생합니다. 이럴 때 limit() 메서드를 사용하면 원하는 개수만큼만 데이터를 효율적으로 가져올 수 있습니다.

기본 문법

db.COLLECTION_NAME.find().limit(가져올_레코드_수)

MongoDB 셸뿐만 아니라 Java용 MongoDB 드라이버 역시 동일한 이름의 limit() 메서드를 제공합니다. find() 메서드의 실행 결과에 대해 limit()을 호출하고, 필요한 레코드 수를 정수 값으로 전달하면 됩니다.

Java 예제 코드

아래 예제는 students 컬렉션에 5개의 문서를 삽입한 후, limit(3)을 적용하여 처음 3개의 문서만 조회하는 전체 과정을 보여줍니다.

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;

public class LimitingRecords {
    public static void main( String args[] ) {
        // MongoDB 클라이언트 생성
        MongoClient mongo = new MongoClient( "localhost" , 27017 );
        // 데이터베이스 연결
        MongoDatabase database = mongo.getDatabase("myDatabase");
        // 컬렉션 객체 생성
        MongoCollection<Document> collection = database.getCollection("students");

        Document document1 = new Document("name", "Ram").append("age", 26).append("city", "Hyderabad");
        Document document2 = new Document("name", "Robert").append("age", 27).append("city", "Vishakhapatnam");
        Document document3 = new Document("name", "Rhim").append("age", 30).append("city", "Delhi");
        Document document4 = new Document("name", "Radha").append("age", 28).append("city", "Mumbai");
        Document document5 = new Document("name", "Ramani").append("age", 45).append("city", "Pune");

        // 생성한 문서 삽입
        List<Document> list = new ArrayList<Document>();
        list.add(document1);
        list.add(document2);
        list.add(document3);
        list.add(document4);
        list.add(document5);
        collection.insertMany(list);
        System.out.println("Documents Inserted");

        // 컬렉션 객체 다시 가져오기
        collection = database.getCollection("students");

        // limit을 적용하여 문서 조회
        FindIterable<Document> iterDoc = collection.find().limit(3);
        Iterator it = iterDoc.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

실행 결과

위 코드를 실행하면 5개의 문서 중 앞의 3개 문서만 출력되는 것을 확인할 수 있습니다.

Documents Inserted
Document{{_id=5e887b16dac53c7f07cfd740, name=Ram, age=26, city=Hyderabad}}
Document{{_id=5e887b16dac53c7f07cfd741, name=Robert, age=27, city=Vishakhapatnam}}
Document{{_id=5e887b16dac53c7f07cfd742, name=Rhim, age=30, city=Delhi}}

정리

limit() 메서드는 대량의 데이터를 다룰 때 불필요한 데이터 전송과 메모리 사용을 줄여주는 필수적인 기능입니다. 특히 페이징 처리를 구현할 때는 skip() 메서드와 함께 조합하여 사용하면 더욱 효과적입니다. 예를 들어 한 페이지당 10개씩 보여주고 싶다면 collection.find().skip(page * 10).limit(10) 형태로 활용할 수 있습니다.