MongoDB는 유연한 데이터 관리를 지원하며, 때로는 데이터를 삭제해야 할 상황이 발생합니다. MongoDB에서는 deleteOne()과 deleteMany() 메서드를 사용해 데이터를 삭제할 수 있습니다. 이번 글에서는 Node.js와 MongoDB를 연동하여 데이터를 삭제하는 방법을 단계별로 설명하겠습니다.
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
객체를 사용하여 Node.js와 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에서 데이터 삭제하기
MongoDB에서 데이터를 삭제하는 방법에는 deleteOne()과 deleteMany() 두 가지 메서드가 있습니다. deleteOne()
은 조건에 맞는 첫 번째 문서만 삭제하고, deleteMany()
는 조건에 맞는 모든 문서를 삭제합니다.
1. 단일 데이터 삭제: deleteOne()
특정 조건에 맞는 하나의 문서만 삭제하려면 deleteOne()
메서드를 사용합니다. 예를 들어, 이름이 'John Doe'인 사용자를 삭제하는 코드는 다음과 같습니다.
// 단일 데이터 삭제 예시
async function deleteSingleData() {
try {
await client.connect();
console.log('MongoDB에 성공적으로 연결되었습니다.');
const db = client.db(dbName);
const collection = db.collection('users');
// 이름이 'John Doe'인 사용자 삭제
const result = await collection.deleteOne({ name: 'John Doe' });
console.log('삭제된 문서 수:', result.deletedCount);
} catch (error) {
console.error('데이터 삭제 중 오류 발생:', error);
} finally {
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');
}
}
deleteSingleData();
위 코드는 users
컬렉션에서 이름이 'John Doe'인 사용자를 삭제하는 예시입니다. deleteOne()
메서드는 첫 번째로 일치하는 문서를 삭제하며, 결과로 삭제된 문서의 수를 반환합니다.
2. 여러 데이터 삭제: deleteMany()
특정 조건에 맞는 여러 문서를 삭제하려면 deleteMany()
메서드를 사용할 수 있습니다. 예를 들어, 나이가 30 이상인 모든 사용자를 삭제하는 코드는 다음과 같습니다.
// 여러 데이터 삭제 예시
async function deleteMultipleData() {
try {
await client.connect();
console.log('MongoDB에 성공적으로 연결되었습니다.');
const db = client.db(dbName);
const collection = db.collection('users');
// 나이가 30 이상인 사용자 모두 삭제
const result = await collection.deleteMany({ age: { $gte: 30 } });
console.log('삭제된 문서 수:', result.deletedCount);
} catch (error) {
console.error('데이터 삭제 중 오류 발생:', error);
} finally {
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');
}
}
deleteMultipleData();
위 코드는 나이가 30 이상인 모든 사용자를 삭제하는 예시입니다. deleteMany()
메서드를 사용해 조건에 맞는 모든 문서를 삭제할 수 있으며, 결과로 삭제된 문서의 수를 반환합니다.
3. 모든 데이터 삭제: deleteMany()
사용
컬렉션 내의 모든 데이터를 삭제하려면 조건 없이 deleteMany({})
를 사용합니다. 이는 컬렉션의 모든 문서를 삭제합니다.
// 모든 데이터 삭제 예시
async function deleteAllData() {
try {
await client.connect();
console.log('MongoDB에 성공적으로 연결되었습니다.');
const db = client.db(dbName);
const collection = db.collection('users');
// 모든 사용자 삭제
const result = await collection.deleteMany({});
console.log('모든 문서가 삭제되었습니다. 삭제된 문서 수:', result.deletedCount);
} catch (error) {
console.error('데이터 삭제 중 오류 발생:', error);
} finally {
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');
}
}
deleteAllData();
위 코드는 deleteMany({})
를 사용해 users
컬렉션의 모든 문서를 삭제하는 예시입니다. 조건 없이 호출하면 컬렉션 내 모든 데이터가 삭제됩니다.
MongoDB 연결 종료
데이터 삭제 작업이 끝난 후에는 MongoDB 연결을 안전하게 종료해야 합니다. client.close()
메서드를 사용해 MongoDB 연결을 종료할 수 있습니다.
// MongoDB 연결 종료
await client.close();
console.log('MongoDB 연결이 종료되었습니다.');
결론
이번 글에서는 Node.js와 MongoDB를 사용하여 데이터를 삭제하는 방법을 살펴보았습니다. MongoDB의 deleteOne()
과 deleteMany()
메서드를 사용해 단일 문서 또는 여러 문서를 효율적으로 삭제할 수 있습니다. 이 가이드를 바탕으로 MongoDB에서 데이터를 삭제하고, 애플리케이션에서 데이터를 관리하는 기능을 구현해보세요!
댓글 쓰기