Responsive Advertisement

Node.js에서 MongoDB 데이터 정렬하기: Sort 메서드 가이드

MongoDB는 데이터 조회 시 정렬(Sort) 기능을 제공하여 원하는 순서대로 데이터를 정리할 수 있습니다. 특히, 대량의 데이터를 다룰 때 정렬은 매우 유용합니다. 이번 글에서는 Node.jsMongoDB를 연동하여 sort() 메서드를 사용해 데이터를 정렬하는 방법을 알아보겠습니다.

Node.js와 MongoDB 연동 설정

MongoDB에서 데이터를 정렬하려면 먼저 Node.js와 MongoDB를 연동해야 합니다. 이를 위해 mongodb 패키지를 설치하고, MongoDB 서버에 연결하는 방법을 알아보겠습니다.

1. MongoDB 설치 및 설정

MongoDB는 로컬 환경에서 설치하거나 MongoDB Atlas와 같은 클라우드 서비스를 사용할 수 있습니다. 로컬에 MongoDB를 설치했다면, Node.js 프로젝트에서 MongoDB와 연동할 수 있도록 mongodb 패키지를 설치해야 합니다.

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

2. MongoDB 연결 설정

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

// 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에서 데이터 정렬하기: sort() 메서드

MongoDB에서 sort() 메서드를 사용하면 조회된 데이터를 특정 필드를 기준으로 오름차순 또는 내림차순으로 정렬할 수 있습니다. 정렬은 1-1로 지정하며, 1은 오름차순(작은 값에서 큰 값 순), -1은 내림차순(큰 값에서 작은 값 순)을 의미합니다.

1. 기본적인 데이터 정렬

먼저 users 컬렉션에서 사용자의 나이를 기준으로 오름차순으로 정렬하는 예시를 살펴보겠습니다.

// 나이 기준으로 오름차순 정렬

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

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

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

sortByAgeAscending();

위 코드는 users 컬렉션의 데이터를 age 필드를 기준으로 오름차순으로 정렬하는 예시입니다. sort({ age: 1 })에서 1은 오름차순을 의미합니다.

2. 내림차순으로 데이터 정렬하기

이번에는 users 컬렉션에서 나이를 기준으로 내림차순으로 데이터를 정렬하는 방법을 살펴보겠습니다.

// 나이 기준으로 내림차순 정렬

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

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

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

sortByAgeDescending();

위 코드는 나이를 기준으로 내림차순으로 정렬하는 예시입니다. sort({ age: -1 })에서 -1은 내림차순을 의미합니다.

3. 여러 필드로 데이터 정렬하기

때로는 하나 이상의 필드를 기준으로 데이터를 정렬해야 할 때가 있습니다. 예를 들어, 나이를 기준으로 오름차순으로 정렬하고, 나이가 같을 경우 이름을 기준으로 내림차순으로 정렬하는 방법은 다음과 같습니다.

// 나이 기준으로 오름차순, 이름 기준으로 내림차순 정렬

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

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

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

sortByMultipleFields();

위 코드는 먼저 age를 기준으로 오름차순으로 정렬하고, age 값이 동일할 경우 name을 기준으로 내림차순으로 정렬하는 예시입니다. sort({ age: 1, name: -1 })는 두 가지 필드를 기준으로 정렬하는 방법을 보여줍니다.

4. 정렬과 제한 함께 사용하기

정렬된 데이터를 조회할 때 상위 몇 개의 결과만 가져오고 싶을 수 있습니다. 이 경우 sort()limit() 메서드를 함께 사용하여 특정 개수만큼의 데이터를 가져올 수 있습니다. 예를 들어, 나이 순으로 상위 3명의 사용자만 조회하는 방법은 다음과 같습니다.

// 나이 순으로 상위 3명의 사용자만 조회

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

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

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

sortAndLimit();

위 코드는 나이 기준으로 정렬한 후 상위 3명의 사용자만 조회하는 예시입니다. limit(3) 메서드를 사용해 조회 결과의 개수를 제한할 수 있습니다.

MongoDB 연결 종료

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

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

결론

이번 글에서는 Node.jsMongoDB를 사용하여 sort() 메서드로 데이터를 정렬하는 방법을 알아보았습니다. MongoDB의 정렬 기능을 사용하면 데이터를 특정 기준에 맞춰 효율적으로 정렬할 수 있습니다. 여러 필드를 기준으로 정렬하거나, 정렬된 데이터에서 상위 결과만 가져오는 등의 기능도 함께 활용하여 강력한 쿼리를 작성할 수 있습니다. 이 가이드를 바탕으로 MongoDB에서 데이터를 효과적으로 정렬해보세요!

댓글 쓰기