MongoDB๋ NoSQL ๊ธฐ๋ฐ์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฐํ๊ฒ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํนํ JSON ํ์์ ๋ฐ์ดํฐ ์ ์ฅ ๊ตฌ์กฐ์ ๊ฐ๋ ฅํ ํ์ฅ์ฑ ๋๋ถ์ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ ํธํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ Node.js์ MongoDB๋ฅผ ์ฐ๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค.
Node.js์ MongoDB ์ฐ๋ํ๊ธฐ
Node.js ์ ํ๋ฆฌ์ผ์ด์
์์ MongoDB๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ MongoDB์ Node.js๋ฅผ ์ฐ๋ํด์ผ ํฉ๋๋ค. MongoDB์ ๊ณต์ Node.js ํด๋ผ์ด์ธํธ์ธ mongodb
ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํต์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
1. MongoDB ์๋ฒ ์ค์น
MongoDB๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋จผ์ ๋ก์ปฌ์ด๋ ์๊ฒฉ ์๋ฒ์ MongoDB๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ๋ก์ปฌ ์๋ฒ์ MongoDB๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ MongoDB ๊ณต์ ๋ฌธ์์์ ํ์ธํ ์ ์์ผ๋ฉฐ, ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ MongoDB Atlas๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
2. Node.js ํ๋ก์ ํธ ์ค์
MongoDB๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด Node.js ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
$ mkdir myapp
$ cd myapp
$ npm init -y
$ npm install mongodb
์ ๋ช
๋ น์ด๋ฅผ ํตํด Node.js ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐํํ๊ณ , MongoDB์์ ํต์ ์ ์ํ mongodb
ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
3. MongoDB ์ฐ๊ฒฐ ์ค์
์ด์ Node.js์ MongoDB๋ฅผ ์ฐ๊ฒฐํ ์ฐจ๋ก์
๋๋ค. mongodb
ํจํค์ง๋ฅผ ์ฌ์ฉํด MongoDB ์๋ฒ์ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ณธ ์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.
// app.js
const { MongoClient } = require('mongodb');
// MongoDB ์ฐ๊ฒฐ URL
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url);
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ
const dbName = 'myDatabase';
async function main() {
try {
// MongoDB ์ฐ๊ฒฐ
await client.connect();
console.log('MongoDB์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค.');
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ
const db = client.db(dbName);
// ์์
์ํ (์: ์ปฌ๋ ์
์กฐํ)
const collections = await db.collections();
console.log('๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปฌ๋ ์
:', collections);
} catch (error) {
console.error('MongoDB ์ฐ๊ฒฐ ์ค ์ค๋ฅ ๋ฐ์:', error);
} finally {
// MongoDB ์ฐ๊ฒฐ ์ข
๋ฃ
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
}
}
main();
์ ์ฝ๋๋ MongoClient
๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ์ MongoDB ์๋ฒ์ ์ฐ๊ฒฐํ ํ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์
์ ์กฐํํ๊ณ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ ๊ฐ๋จํ ์์์
๋๋ค.
MongoDB์์ ๋ฐ์ดํฐ ์ฝ์ ํ๊ธฐ
MongoDB์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ๋ ค๋ฉด ๋จผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์
์ ์ ํํ ํ, insertOne()
๋๋ insertMany()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋จ์ผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
// ๋ฐ์ดํฐ ์ฝ์
์์
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: 'John Doe', age: 30 });
console.log('๋ฐ์ดํฐ ์ฝ์
์ฑ๊ณต:', result.insertedId);
} catch (error) {
console.error('๋ฐ์ดํฐ ์ฝ์
์ค ์ค๋ฅ ๋ฐ์:', error);
} finally {
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
}
}
insertData();
์ ์ฝ๋๋ users
์ปฌ๋ ์
์ ์๋ก์ด ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ๋ ์์์
๋๋ค. insertOne()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด JSON ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ ์ ์์ต๋๋ค.
MongoDB์์ ๋ฐ์ดํฐ ์กฐํํ๊ธฐ
MongoDB์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ค๋ฉด find()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์กฐํํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
// ๋ฐ์ดํฐ ์กฐํ ์์
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
์ปฌ๋ ์
์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํ๋ ์์์
๋๋ค.
MongoDB์์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธํ๊ธฐ
MongoDB์์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ค๋ฉด updateOne()
๋๋ updateMany()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํน์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
// ๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์์
async function updateData() {
try {
await client.connect();
console.log('MongoDB์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค.');
const db = client.db(dbName);
const collection = db.collection('users');
// ํน์ ์ฌ์ฉ์์ ๋์ด ์
๋ฐ์ดํธ
const result = await collection.updateOne(
{ name: 'John Doe' },
{ $set: { age: 35 } }
);
console.log('์
๋ฐ์ดํธ๋ ๋ฌธ์ ์:', result.modifiedCount);
} catch (error) {
console.error('๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์ค ์ค๋ฅ ๋ฐ์:', error);
} finally {
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
}
}
updateData();
์ ์ฝ๋์์๋ John Doe
๋ผ๋ ์ฌ์ฉ์์ ๋์ด๋ฅผ 35๋ก ์
๋ฐ์ดํธํฉ๋๋ค. updateOne()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด ํน์ ํ๋๋ง ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
MongoDB์์ ๋ฐ์ดํฐ ์ญ์ ํ๊ธฐ
MongoDB์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ค๋ฉด deleteOne()
๋๋ deleteMany()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค์์ ํน์ ์ฌ์ฉ์๋ฅผ ์ญ์ ํ๋ ์์์
๋๋ค.
// ๋ฐ์ดํฐ ์ญ์ ์์
async function deleteData() {
try {
await client.connect();
console.log('MongoDB์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค.');
const db = client.db(dbName);
const collection = db.collection('users');
// ํน์ ์ฌ์ฉ์ ์ญ์
const result = await collection.deleteOne({ name: 'John Doe' });
console.log('์ญ์ ๋ ๋ฌธ์ ์:', result.deletedCount);
} catch (error) {
console.error('๋ฐ์ดํฐ ์ญ์ ์ค ์ค๋ฅ ๋ฐ์:', error);
} finally {
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
}
}
deleteData();
์ ์ฝ๋๋ John Doe
๋ผ๋ ์ฌ์ฉ์๋ฅผ ์ญ์ ํ๋ ์์์
๋๋ค. deleteOne()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์กฐ๊ฑด์ ๋ง๋ ํ๋์ ๋ฌธ์๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
MongoDB ์ฐ๊ฒฐ ์ข ๋ฃ
์์
์ด ๋๋ ํ์๋ MongoDB ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. client.close()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ฐ๊ฒฐ์ ์์ ํ๊ฒ ์ข
๋ฃํ ์ ์์ต๋๋ค.
// MongoDB ์ฐ๊ฒฐ ์ข
๋ฃ
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
๊ฒฐ๋ก
Node.js์์ MongoDB๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฐํ๊ฒ ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. mongodb
ํจํค์ง๋ฅผ ํตํด ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฝ์
, ์กฐํ, ์์ , ์ญ์ ํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋๋ฅผ ๋ฐํ์ผ๋ก MongoDB๋ฅผ ํ์ฉํด ํจ์จ์ ์ธ Node.js ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํด๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ