MongoDB는 유연한 스키마 구조 덕분에 데이터베이스와 컬렉션을 매우 쉽게 생성하고 관리할 수 있습니다. 특히, 컬렉션은 MongoDB에서 데이터를 저장하는 기본 단위로, 각 컬렉션에는 문서(Document)들이 JSON 형식으로 저장됩니다. 이번 글에서는 Node.js와 MongoDB를 연동하여 새로운 컬렉션을 생성하고 데이터를 삽입하는 방법을 설명하겠습니다.
MongoDB와 Node.js 연동하기
MongoDB와 Node.js를 연동하기 위해서는 MongoDB와 통신할 수 있는 mongodb
패키지를 설치해야 합니다. 이 패키지를 사용하면 데이터베이스와 컬렉션을 쉽게 관리할 수 있습니다.
1. MongoDB 설치 및 클라이언트 설정
MongoDB는 로컬 환경에 설치하거나, MongoDB Atlas 같은 클라우드 서비스를 통해 사용할 수 있습니다. 로컬에서 MongoDB 서버를 실행 중이라면, 다음 단계를 진행하면 됩니다.
2. Node.js 프로젝트 설정
MongoDB와 Node.js를 연동하기 위해, 먼저 Node.js 프로젝트를 초기화하고 필요한 패키지를 설치해야 합니다.
$ mkdir myapp
$ cd myapp
$ npm init -y
$ npm install mongodb
위 명령어를 통해 Node.js 프로젝트를 초기화하고 MongoDB와 연결할 수 있는 mongodb
패키지를 설치합니다.
3. MongoDB 연결 설정
이제 Node.js와 MongoDB를 연결해봅시다. 아래 코드는 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();
위 코드에서는 MongoClient
를 사용해 MongoDB 서버에 연결하고, db()
메서드를 사용해 데이터베이스를 선택하는 과정을 보여줍니다.
MongoDB에서 컬렉션 생성하기
MongoDB는 데이터를 삽입할 때 자동으로 컬렉션을 생성하지만, 필요에 따라 명시적으로 컬렉션을 생성할 수 있습니다. 여기서는 users
라는 새로운 컬렉션을 생성하고 데이터를 삽입하는 방법을 설명하겠습니다.
1. 컬렉션 생성
컬렉션을 명시적으로 생성하려면 createCollection()
메서드를 사용할 수 있습니다.
// 컬렉션 생성 예시
async function createCollection() {
try {
await client.connect();
console.log('MongoDB에 성공적으로 연결되었습니다.');
const db = client.db(dbName);
// 새로운 컬렉션 생성
await db.createCollection('users');
console.log('컬렉션이 성공적으로 생성되었습니다.');
} catch (error) {
console.error('컬렉션 생성 중 오류 발생:', error);
} finally {
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');
}
}
createCollection();
위 코드는 users
라는 컬렉션을 생성합니다. MongoDB는 유연한 스키마를 사용하기 때문에 데이터 구조를 미리 정의하지 않고도 컬렉션을 생성할 수 있습니다.
2. 컬렉션에 데이터 삽입
컬렉션을 생성한 후, insertOne()
또는 insertMany()
메서드를 사용하여 데이터를 삽입할 수 있습니다. 다음 코드는 users
컬렉션에 새로운 사용자를 추가하는 예시입니다.
// 데이터 삽입 예시
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: 'Alice', age: 25 });
console.log('데이터 삽입 성공:', result.insertedId);
} catch (error) {
console.error('데이터 삽입 중 오류 발생:', error);
} finally {
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');
}
}
insertData();
위 코드에서는 users
컬렉션에 Alice
라는 사용자의 데이터를 삽입하는 예시입니다. insertOne()
메서드를 사용해 데이터를 저장할 수 있습니다.
MongoDB에서 데이터 조회하기
삽입된 데이터를 조회하려면 find()
메서드를 사용합니다. 다음은 users
컬렉션에서 모든 사용자 데이터를 조회하는 예시입니다.
// 데이터 조회 예시
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
컬렉션의 모든 데이터를 배열로 변환하여 출력하는 예시입니다.
컬렉션 삭제하기
필요하지 않은 컬렉션은 삭제할 수 있습니다. drop()
메서드를 사용하여 특정 컬렉션을 삭제하는 방법을 살펴보겠습니다.
// 컬렉션 삭제 예시
async function dropCollection() {
try {
await client.connect();
console.log('MongoDB에 성공적으로 연결되었습니다.');
const db = client.db(dbName);
// 컬렉션 삭제
await db.collection('users').drop();
console.log('컬렉션이 성공적으로 삭제되었습니다.');
} catch (error) {
console.error('컬렉션 삭제 중 오류 발생:', error);
} finally {
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');
}
}
dropCollection();
위 코드는 users
컬렉션을 삭제하는 예시입니다. 삭제된 컬렉션은 복구할 수 없으므로 신중하게 사용해야 합니다.
MongoDB 연결 종료
모든 작업이 끝나면 MongoDB 연결을 종료해야 합니다. client.close()
메서드를 사용해 연결을 안전하게 종료할 수 있습니다.
// MongoDB 연결 종료
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');
결론
이번 글에서는 Node.js와 MongoDB를 연동하여 새로운 컬렉션을 생성하고, 데이터를 삽입 및 조회하는 방법을 살펴보았습니다. MongoDB는 매우 유연한 스키마 구조 덕분에 빠르게 데이터를 저장하고 관리할 수 있으며, 다양한 기능을 쉽게 구현할 수 있습니다. 이 가이드를 바탕으로 MongoDB 컬렉션을 생성하고 데이터를 효율적으로 관리하는 애플리케이션을 개발해보세요!
댓글 쓰기