Node.js - MongoDB 콜렉션 생성

안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 Node.js와 MongoDB의 세계에 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 교사로서, MongoDB에서 Node.js를 사용하여 콜렉션을 생성하는 과정을 안내해 드리겠습니다. 프로그래밍에 새로운 사람이라면 걱정하지 마세요 - 우리는 단계별로 진행하겠습니다. 잠시 후면 프로처럼 콜렉션을 생성할 수 있을 것입니다!

Node.js - MongoDB Create Collection

MongoDB는 무엇인가요?

구체적인 내용에 들어가기 전에 기본 개념부터 시작해 보겠습니다. MongoDB는 유연한 JSON 같은 문서로 데이터를 저장하는 인기 있는 NoSQL 데이터베이스입니다. 거대한 디지털 파일 캐비닛이라고 생각하면 됩니다. 여기서는 구조에 대해太多 걱정할 필요가 없이 모든 종류의 정보를 저장할 수 있습니다.

콜렉션은 무엇인가요?

MongoDB에서 콜렉션은 파일 캐비닛 속의 폴더와 같습니다. 비슷한 문서를 모아둡니다. 예를 들어, 도서관 데이터베이스를 구축하는 경우, 도서, 저자, 대출자를 위한 각각의 콜렉션을 가질 수 있습니다.

환경 설정

먼저, 우리는 컴퓨터에 Node.js와 MongoDB가 설치되어 있는지 확인해야 합니다. 아직 이 작업을 수행하지 않았다면, 공식 웹사이트로 빠르게 방문하여 설치 가이드를 따라서 주세요.

설치가 완료되면, 새로운 프로젝트 폴더를 만들고 초기화하겠습니다:

mkdir mongodb-collection-tutorial
cd mongodb-collection-tutorial
npm init -y

이제 Node.js용 MongoDB 드라이버를 설치하겠습니다:

npm install mongodb

MongoDB에 연결

좋아요, 이제 재미있는 부분이 시작됩니다! app.js라는 새로운 파일을 생성하고, MongoDB 데이터베이스에 연결을 시작해 보겠습니다:

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

// Connection URL
const url = 'mongodb://localhost:27017';

// Database Name
const dbName = 'myLibrary';

// Create a new MongoClient
const client = new MongoClient(url);

// Connect to the server
async function connect() {
try {
await client.connect();
console.log('데이터베이스에 성공적으로 연결되었습니다');
const db = client.db(dbName);
return db;
} catch (error) {
console.error('데이터베이스 연결 중 오류:', error);
}
}

이 코드에서 우리는 로컬 MongoDB 서버에 연결을 설정하고 있습니다. localhost:27017은 MongoDB의 기본 주소입니다. 또한 데이터베이스 이름을 지정하고 있습니다. myLibrary이 데이터베이스가 아직 존재하지 않는다면, MongoDB는 첫 사용 시 자동으로 생성해 줄 것입니다.

콜렉션 생성

이제 연결이 완료되었으므로, 우리의 첫 번째 콜렉션을 생성해 보겠습니다! 도서관에 'books' 콜렉션을 생성하겠습니다:

async function createCollection() {
const db = await connect();
try {
const result = await db.createCollection('books');
console.log('콜렉션 성공적으로 생성:', result.namespace);
} catch (error) {
if (error.code === 48) {
console.log('콜렉션이 이미 존재합니다');
} else {
console.error('콜렉션 생성 중 오류:', error);
}
} finally {
await client.close();
}
}

createCollection();

이를 간단히 설명하자면:

  1. createCollection 메서드를 사용하여 'books'라는 새로운 콜렉션을 생성합니다.
  2. 콜렉션이 성공적으로 생성되면 성공 메시지를 로그합니다.
  3. 오류가 발생하면, 오류 코드가 48인지 확인합니다. 그렇다면 콜렉션이 이미 존재한다는 메시지를 로그합니다. 그 외의 오류는 오류 상세 정보를 로그합니다.
  4. 마지막으로 데이터베이스 연결을 닫습니다.

콜렉션에 옵션 추가

MongoDB는 콜렉션을 생성할 때 옵션을 지정할 수 있습니다. 옵션을 추가하여 다른 콜렉션을 생성해 보겠습니다:

async function createCollectionWithOptions() {
const db = await connect();
try {
const options = {
capped: true,
size: 1000000,
max: 5000
};
const result = await db.createCollection('logs', options);
console.log('옵션을 포함하여 콜렉션 성공적으로 생성:', result.namespace);
} catch (error) {
console.error('옵션을 포함하여 콜렉션 생성 중 오류:', error);
} finally {
await client.close();
}
}

createCollectionWithOptions();

이 예제에서 우리는 다음 옵션으로 'logs' 콜렉션을 생성하고 있습니다:

  • capped: true - 이는 고정 크기의 콜렉션을 생성합니다.
  • size: 1000000 - 이는 콜렉션의 최대 크기를 1百万 바이트로 설정합니다.
  • max: 5000 - 이는 콜렉션이 가질 수 있는 문서의 최대 수를 5000개로 설정합니다.

이러한 옵션은 로그 파일과 같은 "롤링" 성격을 가진 콜렉션에 유용합니다. 최근 항목만 유지하고 싶을 때 사용됩니다.

콜렉션 존재 여부 확인

occasionally, you might want to check if a collection already exists before trying to create it. Here's how you can do that:

async function checkCollectionExists(collectionName) {
const db = await connect();
try {
const collections = await db.listCollections({name: collectionName}).toArray();
if (collections.length > 0) {
console.log(`콜렉션 ${collectionName}이 존재합니다`);
} else {
console.log(`콜렉션 ${collectionName}이 존재하지 않습니다`);
}
} catch (error) {
console.error('콜렉션 확인 중 오류:', error);
} finally {
await client.close();
}
}

checkCollectionExists('books');

이 함수는 listCollections 메서드를 사용하여 지정된 이름의 콜렉션이 존재하는지 확인합니다. 반환된 배열의 길이가 0보다 크다면 콜렉션이 존재합니다.

모든 것을 함께

이제 콜렉션 생성에 대해 배웠으므로, 모든 것을 단일 스크립트로 통합해 보겠습니다:

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

const url = 'mongodb://localhost:27017';
const dbName = 'myLibrary';
const client = new MongoClient(url);

async function connect() {
try {
await client.connect();
console.log('데이터베이스에 성공적으로 연결되었습니다');
return client.db(dbName);
} catch (error) {
console.error('데이터베이스 연결 중 오류:', error);
}
}

async function createCollections() {
const db = await connect();
try {
// 'books' 콜렉션 생성
await db.createCollection('books');
console.log('Books 콜렉션 성공적으로 생성');

// 옵션을 포함하여 'logs' 콜렉션 생성
const logOptions = { capped: true, size: 1000000, max: 5000 };
await db.createCollection('logs', logOptions);
console.log('Logs 콜렉션 성공적으로 생성');

// 'authors' 콜렉션이 존재하는지 확인 후 생성
const collections = await db.listCollections({name: 'authors'}).toArray();
if (collections.length > 0) {
console.log('Authors 콜렉션이 이미 존재합니다');
} else {
await db.createCollection('authors');
console.log('Authors 콜렉션 성공적으로 생성');
}
} catch (error) {
console.error('createCollections 중 오류:', error);
} finally {
await client.close();
}
}

createCollections();

이 스크립트는 다음과 같은 개념을 모두 통합하고 있습니다:

  1. 데이터베이스에 연결
  2. 간단한 콜렉션 ('books') 생성
  3. 옵션을 포함한 콜렉션 ('logs') 생성
  4. 콜렉션이 존재하는지 확인 후 생성 ('authors')

결론

축하합니다! MongoDB와 Node.js의 세계로 첫 걸음을 뗀 것입니다. 우리는 MongoDB 데이터베이스에 연결, 콜렉션 생성, 콜렉션에 옵션 추가 및 콜렉션 존재 여부 확인에 대해 배웠습니다. 이러한 기본 기술은 MongoDB와의 데이터베이스 관리에서 큰 도움이 될 것입니다.

기억하시오, 연습이 완성을 이루는 길입니다. 다양한 유형의 콜렉션을 생성하고, 다양한 옵션을 실험하고, 실수를 두려워 말아세요 - 그게 우리가 배우는 방법입니다!

이제 계속 코딩하고, 배우고, 가장 중요한 것은 즐기세요! 다음 번에 다시 만날 때까지, 행복한 데이터베이스 관리를 기원합니다!

여기서 사용한 주요 메서드를 요약한 표입니다:

메서드 설명
MongoClient.connect() MongoDB 서버에 연결
db.createCollection() 새로운 콜렉션 생성
db.listCollections() 기존 콜렉션 목록 가져오기

계속 코딩하고, 배우고, 즐겨 주세요!

Credits: Image by storyset