Responsive Advertisement

Node.js에서 MongoDB 데이터 제한하기: Limit 사용 가이드

MongoDB는 대용량 데이터를 다룰 때, 조회하는 데이터의 양을 제어하기 위해 limit() 메서드를 제공합니다. 이 메서드를 사용하면 쿼리 결과에서 반환할 데이터의 개수를 제한할 수 있습니다. 이번 글에서는 Node.jsMongoDB를 연동하여 limit() 메서드를 사용하는 방법을 알아보겠습니다.

Node.js와 MongoDB 연동 설정

MongoDB에서 데이터를 제한하여 조회하려면 먼저 Node.js와 MongoDB를 연동해야 합니다. 이를 위해 mongodb 패키지를 설치하고 MongoDB 서버에 연결하는 방법을 설명하겠습니다.

1. MongoDB 설치 및 설정

MongoDB는 로컬 환경에서 설치할 수 있으며, MongoDB Atlas와 같은 클라우드 서비스에서도 사용할 수 있습니다. 로컬 MongoDB 서버를 설치한 후, 아래 명령어로 Node.js 프로젝트를 초기화하고 mongodb 패키지를 설치합니다.

$ mkdir myapp
$ cd myapp
$ npm init -y
$ npm install mongodb

2. MongoDB 연결 설정

다음은 MongoDB 서버에 연결하는 기본 코드입니다. MongoClient 객체를 사용하여 MongoDB와 Node.js를 연결할 수 있습니다.

// app.js

const { MongoClient } = require('mongodb');

// MongoDB 연결 URL
const url = 'mongodb://localhost:27017'; // 로컬 MongoDB URL
const client = new MongoClient(url);

// 사용할 데이터베이스 이름
const dbName = 'myDatabase';

async function main() {
    try {
        // MongoDB 연결
        await client.connect();
        console.log('MongoDB에 성공적으로 연결되었습니다.');

        // 데이터베이스 선택
        const db = client.db(dbName);
        console.log(`데이터베이스 ${dbName} 선택됨.`);
    } catch (error) {
        console.error('MongoDB 연결 중 오류 발생:', error);
    } finally {
        // MongoDB 연결 종료
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

main();

위 코드를 통해 MongoDB 서버에 연결하고, 데이터베이스를 선택할 수 있습니다. 이제 데이터를 제한하여 조회할 준비가 완료되었습니다.

MongoDB에서 데이터 제한하기: limit() 사용법

MongoDB에서 limit() 메서드는 조회 결과에서 반환할 문서의 개수를 제한할 때 사용됩니다. 예를 들어, 대량의 데이터를 다룰 때 처음 몇 개의 데이터만 가져오고 싶을 때 매우 유용합니다. 기본적으로 find() 메서드와 함께 사용됩니다.

1. 상위 5개의 데이터 조회

다음은 users 컬렉션에서 상위 5명의 사용자 데이터를 조회하는 방법입니다.

// 상위 5명의 사용자 데이터 조회

async function findLimitedData() {
    try {
        await client.connect();
        console.log('MongoDB에 성공적으로 연결되었습니다.');

        const db = client.db(dbName);
        const collection = db.collection('users');

        // 상위 5명의 사용자만 조회
        const users = await collection.find({}).limit(5).toArray();
        console.log('상위 5명의 사용자:', users);
    } catch (error) {
        console.error('데이터 조회 중 오류 발생:', error);
    } finally {
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

findLimitedData();

위 코드는 users 컬렉션에서 상위 5명의 사용자만 조회하는 예시입니다. limit(5) 메서드를 사용하여 반환할 데이터의 개수를 5개로 제한합니다.

2. 조건에 맞는 데이터 제한하여 조회하기

특정 조건에 맞는 데이터를 제한하여 조회할 수도 있습니다. 예를 들어, 나이가 30 이상인 사용자 중 상위 3명의 데이터를 조회하는 코드는 다음과 같습니다.

// 나이가 30 이상인 사용자 중 상위 3명 조회

async function findFilteredAndLimitedData() {
    try {
        await client.connect();
        console.log('MongoDB에 성공적으로 연결되었습니다.');

        const db = client.db(dbName);
        const collection = db.collection('users');

        // 나이가 30 이상인 사용자 중 상위 3명만 조회
        const users = await collection.find({ age: { $gte: 30 } }).limit(3).toArray();
        console.log('나이가 30 이상인 상위 3명의 사용자:', users);
    } catch (error) {
        console.error('데이터 조회 중 오류 발생:', error);
    } finally {
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

findFilteredAndLimitedData();

위 코드는 나이가 30 이상인 사용자 중 상위 3명의 데이터만 조회하는 예시입니다. limit(3) 메서드를 사용하여 조건에 맞는 데이터 중 상위 3개의 문서만 반환합니다.

3. 정렬과 함께 데이터 제한하기

limit() 메서드는 정렬과 함께 사용할 때 매우 유용합니다. 예를 들어, 나이를 기준으로 오름차순 정렬된 사용자 중 상위 5명의 데이터를 조회하는 방법은 다음과 같습니다.

// 나이를 기준으로 오름차순 정렬된 상위 5명의 사용자 조회

async function findSortedAndLimitedData() {
    try {
        await client.connect();
        console.log('MongoDB에 성공적으로 연결되었습니다.');

        const db = client.db(dbName);
        const collection = db.collection('users');

        // 나이 기준 오름차순 정렬 후 상위 5명만 조회
        const users = await collection.find({}).sort({ age: 1 }).limit(5).toArray();
        console.log('나이 기준으로 정렬된 상위 5명의 사용자:', users);
    } catch (error) {
        console.error('데이터 조회 중 오류 발생:', error);
    } finally {
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

findSortedAndLimitedData();

위 코드는 나이를 기준으로 오름차순 정렬한 후 상위 5명의 사용자만 조회하는 예시입니다. sort()limit() 메서드를 함께 사용하여 정렬된 데이터 중 일부만 가져올 수 있습니다.

4. 페이지네이션 구현: limit()skip()

limit() 메서드는 페이지네이션(pagination)을 구현할 때도 유용합니다. 페이지네이션은 데이터를 여러 페이지로 나누어 조회하는 방식입니다. 예를 들어, 한 페이지에 5명의 데이터를 표시하는 페이지네이션을 구현하려면 skip() 메서드와 함께 사용할 수 있습니다.

// 페이지네이션 구현 예시

async function findPaginatedData(page) {
    try {
        await client.connect();
        console.log('MongoDB에 성공적으로 연결되었습니다.');

        const db = client.db(dbName);
        const collection = db.collection('users');

        const limit = 5; // 한 페이지에 5개의 문서 표시
        const skip = (page - 1) * limit; // 페이지 번호에 따른 데이터 건너뛰기

        // 페이지네이션을 사용하여 데이터 조회
        const users = await collection.find({}).skip(skip).limit(limit).toArray();
        console.log(`페이지 ${page}의 사용자 데이터:`, users);
    } catch (error) {
        console.error('페이지네이션 조회 중 오류 발생:', error);
    } finally {
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

// 예시로 페이지 2의 데이터를 조회
findPaginatedData(2);

위 코드는 페이지네이션을 구현하여 페이지 2의 데이터를 조회하는 예시입니다. skip() 메서드를 사용해 페이지 번호에 따라 건너뛸 데이터를 설정하고, limit() 메서드를 사용해 한 페이지에 표시할 데이터 개수를 제한합니다.

MongoDB 연결 종료

데이터 조회 작업이 끝난 후에는 MongoDB 연결을 안전하게 종료해야 합니다. client.close() 메서드를 사용해 연결을 종료할 수 있습니다.

// MongoDB 연결 종료
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');

결론

이번 글에서는 Node.js와 MongoDB를 사용하여 limit() 메서드로 데이터를 제한하여 조회하는 방법을 살펴보았습니다. limit() 메서드를 사용하면 조회할 데이터의 개수를 제한하여 성능을 최적화할 수 있으며, 정렬과 함께 사용하거나 페이지네이션을 구현할 때도 매우 유용합니다. 이 가이드를 바탕으로 MongoDB에서 데이터를 효율적으로 조회하고 관리해보세요!

댓글 쓰기