Node.js - MongoDB 데이터베이스 생성
안녕하세요, 야심찬 프로그래머 여러분! 오늘 우리는 Node.js와 MongoDB의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 저는 이 강력한 도구들을 사용하여 데이터베이스를 생성하는 과정을 안내해 드리겠습니다. 프로그래밍에 처음이라면 걱정하지 마세요 - 기본부터 시작하여 차근차근 진행하겠습니다. 그럼 커피 한 잔 (또는 여러분의 좋아하는 음료)을 가져와서, 시작해 보겠습니다!
MongoDB는 무엇인가요?
데이터베이스를 생성하기 전에 MongoDB가 무엇인지 이해해 보겠습니다. 거대한 디지털 파일 캐비닛을 가지고 있고, 여기서 다양한 정보를 저장할 수 있다고 상상해 보세요. MongoDB는 바로 그런东西입니다 - 데이터를 유연한 JSON-like 형식인 BSON(Binary JSON)으로 저장하는 데이터베이스입니다. 빠르게 필요한 정보를 찾아주고 회수해주는 슈퍼 정리된 비서를 가지고 있는 것과 같습니다.
커넥션 스트링: MongoDB로의 관문
이제 MongoDB가 무엇인지 알고 있는 만큼, 어떻게 연결하는지 이야기해 보겠습니다. 커넥션 스트링은 여러분의 Node.js 애플리케이션과 MongoDB 간의 비밀 손을 맞추는 것처럼 생각해 보세요. MongoDB에 연결하기 위해 필요한 모든 정보를 포함하고 있습니다. 예를 들어, MongoDB의 일반적인 커넥션 스트링은 다음과 같습니다:
mongodb://username:password@hostname:port/database
이를 간단히 설명하자면:
-
mongodb://
: 여러분의 애플리케이션이 MongoDB 데이터베이스에 연결하고 있음을 알리는 프로토콜입니다. -
username:password
: 로그인凭据(필요하다면). -
hostname
: MongoDB 서버의 주소(예: 로컬 머신의 경우 localhost). -
port
: MongoDB가 듣고 있는 포트 번호(기본값은 27017). -
database
: 연결하고 싶은 데이터베이스의 이름.
예제: 데이터베이스 목록
이제 코드로 손을 더러워보겠습니다! 먼저 MongoDB에 연결하고 모든 데이터베이스를 목록으로 보여줍니다. 이는 우리의 연결이 잘 작동하고 있는지 확인하고 이미 존재하는 데이터베이스를 보는 좋은 방법입니다.
const MongoClient = require('mongodb').MongoClient;
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Create a new MongoClient
const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true });
// Connect to the server
client.connect(function(err) {
if (err) {
console.error('MongoDB에 연결 실패:', err);
return;
}
console.log("서버에 성공적으로 연결됨");
// Get the admin database
const adminDb = client.db(dbName).admin();
// List all the available databases
adminDb.listDatabases(function(err, dbs) {
if (err) {
console.error('데이터베이스 목록을 가져오는 데 실패:', err);
return;
}
console.log("데이터베이스:");
dbs.databases.forEach(function(db) {
console.log(" - " + db.name);
});
client.close();
});
});
이 코드를 간단히 설명하자면:
- MongoDB 드라이버를 require합니다.
- 커넥션 URL과 데이터베이스 이름을 설정합니다.
- 새로운 MongoClient을 생성합니다.
-
connect
메서드를 사용하여 MongoDB에 연결합니다. - 연결이 성공하면 admin 데이터베이스를 가져옵니다.
-
listDatabases
메서드를 사용하여 모든 데이터베이스를 가져옵니다. - 모든 데이터베이스의 이름을 출력합니다.
- 마지막으로 연결을 닫습니다.
이 코드를 실행하면 MongoDB 인스턴스의 모든 데이터베이스를 목록으로 볼 수 있습니다. 디지털 파일 캐비닛에게 "이 캐비닛에 어떤 폴더가 있는가?"라고 묻는 것과 같습니다.
새로운 데이터베이스 생성
이제 흥미로운 부분 - 우리 자신의 데이터베이스를 생성해 보겠습니다! MongoDB에서는 데이터를 처음 저장할 때 자동으로 데이터베이스와 컬렉션을 생성합니다. 마법처럼, 사전에 명시적으로 생성할 필요가 없습니다.
"myNewDB"라는 새로운 데이터베이스를 생성하고 "students"라는 컬렉션을 추가해 보겠습니다:
const MongoClient = require('mongodb').MongoClient;
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myNewDB';
// Create a new MongoClient
const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true });
// Connect to the server
client.connect(function(err) {
if (err) {
console.error('MongoDB에 연결 실패:', err);
return;
}
console.log("서버에 성공적으로 연결됨");
// Get the database
const db = client.db(dbName);
// Create a new collection
db.createCollection("students", function(err, res) {
if (err) {
console.error('컬렉션 생성 실패:', err);
return;
}
console.log("컬렉션 생성!");
// Insert a document
db.collection('students').insertOne({
name: "John Doe",
age: 20,
grade: "A"
}, function(err, res) {
if (err) {
console.error('문서 삽입 실패:', err);
return;
}
console.log("문서 삽입");
// Close the connection
client.close();
});
});
});
이 코드에서 일어나는 일을 간단히 설명하자면:
- MongoDB에 연결합니다.
-
client.db(dbName)
을 사용하여 새로운 데이터베이스를 가져옵니다. 존재하지 않으면 MongoDB가 자동으로 생성합니다. -
db.createCollection()
을 사용하여 새로운 컬렉션을 생성합니다. -
insertOne()
을 사용하여 새로운 문서를 컬렉션에 삽입합니다. - 마지막으로 연결을 닫습니다.
이 코드를 실행하면 MongoDB는 "myNewDB" 데이터베이스와 "students" 컬렉션을 생성하고, John Doe의 정보를 문서로 추가합니다. 디지털 파일 캐비닛에 새로운 파일을 만들고, "students" 폴더에 John의 파일을 넣는 것과 같습니다.
결론
축하합니다! MongoDB에 연결하고, 기존 데이터베이스를 목록으로 보여주고, 새로운 데이터베이스와 컬렉션을 생성하는 방법을 배웠습니다. 이제 데이터베이스 마법사로서의 길을 걸어가고 있습니다!
기억해 두세요, 연습이 완벽을 만듭니다. 다른 데이터베이스, 컬렉션을 생성하고, 다양한 유형의 문서를 추가해 보세요. 삽입한 데이터를 조회해보세요. MongoDB를 더 많이 실험할수록 더 편안해질 것입니다.
이제 사용한 주요 메서드를 요약하는 표를 제공합니다:
메서드 | 설명 |
---|---|
MongoClient.connect() |
MongoDB에 연결합니다 |
client.db() |
데이터베이스에 대한 참조를 가져옵니다 |
adminDb.listDatabases() |
모든 사용 가능한 데이터베이스를 목록으로 보여줍니다 |
db.createCollection() |
새로운 컬렉션을 생성합니다 |
collection.insertOne() |
컬렉션에 문서를 삽입합니다 |
快乐的编程을 하고, 데이터베이스는 항상 정리되고, 쿼리는 번개처럼 빠르기를 바랍니다!
Credits: Image by storyset