Responsive Advertisement

Node.js에서 MongoDB 사용하기: MongoDB 연동 가이드

MongoDB는 NoSQL 기반의 비관계형 데이터베이스로, 대용량 데이터를 유연하게 저장하고 관리할 수 있습니다. 특히 JSON 형식의 데이터 저장 구조와 강력한 확장성 덕분에 많은 개발자들이 선호하는 데이터베이스입니다. 이번 글에서는 Node.jsMongoDB를 연동하여 데이터를 처리하는 방법을 단계별로 설명하겠습니다.

Node.js와 MongoDB 연동하기

Node.js 애플리케이션에서 MongoDB를 사용하려면 먼저 MongoDB와 Node.js를 연동해야 합니다. MongoDB의 공식 Node.js 클라이언트인 mongodb 패키지를 사용하면 데이터베이스와의 통신을 쉽게 처리할 수 있습니다.

1. MongoDB 서버 설치

MongoDB를 사용하기 위해 먼저 로컬이나 원격 서버에 MongoDB를 설치해야 합니다. 로컬 서버에 MongoDB를 설치하는 방법은 MongoDB 공식 문서에서 확인할 수 있으며, 클라우드 기반의 MongoDB Atlas를 사용해도 됩니다.

2. Node.js 프로젝트 설정

MongoDB를 사용하기 위해 Node.js 프로젝트를 생성하고 필요한 패키지를 설치해야 합니다.

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

위 명령어를 통해 Node.js 프로젝트를 초기화하고, MongoDB와의 통신을 위한 mongodb 패키지를 설치합니다.

3. MongoDB 연결 설정

이제 Node.js와 MongoDB를 연결할 차례입니다. mongodb 패키지를 사용해 MongoDB 서버와 연결하는 기본 코드는 아래와 같습니다.

// app.js

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

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

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

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

        // 데이터베이스 선택
        const db = client.db(dbName);

        // 작업 수행 (예: 컬렉션 조회)
        const collections = await db.collections();
        console.log('데이터베이스 컬렉션:', collections);
    } catch (error) {
        console.error('MongoDB 연결 중 오류 발생:', error);
    } finally {
        // MongoDB 연결 종료
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

main();

위 코드는 MongoClient를 사용하여 로컬의 MongoDB 서버에 연결한 후, 데이터베이스의 컬렉션을 조회하고 연결을 종료하는 간단한 예시입니다.

MongoDB에서 데이터 삽입하기

MongoDB에서 데이터를 삽입하려면 먼저 데이터베이스와 컬렉션을 선택한 후, insertOne() 또는 insertMany() 메서드를 사용합니다. 여기서는 단일 데이터를 삽입하는 방법을 살펴보겠습니다.

// 데이터 삽입 예시

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

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

        // 단일 데이터 삽입
        const result = await collection.insertOne({ name: 'John Doe', age: 30 });
        console.log('데이터 삽입 성공:', result.insertedId);
    } catch (error) {
        console.error('데이터 삽입 중 오류 발생:', error);
    } finally {
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

insertData();

위 코드는 users 컬렉션에 새로운 사용자를 추가하는 예시입니다. insertOne() 메서드를 사용해 JSON 형식으로 데이터를 삽입할 수 있습니다.

MongoDB에서 데이터 조회하기

MongoDB에서 데이터를 조회하려면 find() 메서드를 사용하여 조건에 맞는 데이터를 검색할 수 있습니다. 예를 들어, 모든 사용자를 조회하는 방법은 아래와 같습니다.

// 데이터 조회 예시

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

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

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

findData();

위 코드는 find() 메서드를 사용해 users 컬렉션의 모든 데이터를 배열로 반환하는 예시입니다.

MongoDB에서 데이터 업데이트하기

MongoDB에서 특정 데이터를 수정하려면 updateOne() 또는 updateMany() 메서드를 사용합니다. 여기서는 특정 사용자의 정보를 업데이트하는 방법을 설명합니다.

// 데이터 업데이트 예시

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

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

        // 특정 사용자의 나이 업데이트
        const result = await collection.updateOne(
            { name: 'John Doe' },
            { $set: { age: 35 } }
        );
        console.log('업데이트된 문서 수:', result.modifiedCount);
    } catch (error) {
        console.error('데이터 업데이트 중 오류 발생:', error);
    } finally {
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

updateData();

위 코드에서는 John Doe라는 사용자의 나이를 35로 업데이트합니다. updateOne() 메서드를 사용해 특정 필드만 업데이트할 수 있습니다.

MongoDB에서 데이터 삭제하기

MongoDB에서 데이터를 삭제하려면 deleteOne() 또는 deleteMany() 메서드를 사용합니다. 다음은 특정 사용자를 삭제하는 예시입니다.

// 데이터 삭제 예시

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

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

        // 특정 사용자 삭제
        const result = await collection.deleteOne({ name: 'John Doe' });
        console.log('삭제된 문서 수:', result.deletedCount);
    } catch (error) {
        console.error('데이터 삭제 중 오류 발생:', error);
    } finally {
        await client.close();
        console.log('MongoDB 연결이 종료되었습니다.');
    }
}

deleteData();

위 코드는 John Doe라는 사용자를 삭제하는 예시입니다. deleteOne() 메서드를 사용해 조건에 맞는 하나의 문서를 삭제할 수 있습니다.

MongoDB 연결 종료

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

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

결론

Node.js에서 MongoDB를 사용하면 대용량 데이터를 유연하게 관리하고 처리할 수 있습니다. mongodb 패키지를 통해 쉽게 데이터베이스에 연결하고, 데이터를 삽입, 조회, 수정, 삭제할 수 있습니다. 이 가이드를 바탕으로 MongoDB를 활용해 효율적인 Node.js 애플리케이션을 개발해보세요!

댓글 쓰기