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 ์ปฌ๋ ์ ์ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํด๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ