MongoDB๋ ์ ์ฐํ ์คํค๋ง ๋๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค. MongoDB์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋๋ updateOne()๊ณผ updateMany() ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ 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
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ MongoDB์ Node.js๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
// 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์์๋ updateOne()๊ณผ updateMany() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. updateOne()
์ ์กฐ๊ฑด์ ๋ง๋ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ง ์์ ํ๊ณ , updateMany()
๋ ์กฐ๊ฑด์ ๋ง๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์์ ํฉ๋๋ค.
1. ๋จ์ผ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ: updateOne()
ํน์ ์กฐ๊ฑด์ ๋ง๋ ํ๋์ ๋ฌธ์๋ง ์์ ํ๋ ค๋ฉด updateOne()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ฆ์ด 'John Doe'์ธ ์ฌ์ฉ์์ ๋์ด๋ฅผ 35๋ก ์์ ํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// ๋จ์ผ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์์
async function updateSingleData() {
try {
await client.connect();
console.log('MongoDB์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค.');
const db = client.db(dbName);
const collection = db.collection('users');
// ์ด๋ฆ์ด 'John Doe'์ธ ์ฌ์ฉ์์ ๋์ด๋ฅผ 35๋ก ์
๋ฐ์ดํธ
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 ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
}
}
updateSingleData();
์ ์ฝ๋๋ users
์ปฌ๋ ์
์์ ์ด๋ฆ์ด 'John Doe'์ธ ์ฌ์ฉ์์ ๋์ด ํ๋๋ฅผ 35๋ก ์
๋ฐ์ดํธํ๋ ์์์
๋๋ค. updateOne()
๋ฉ์๋๋ ์ฒซ ๋ฒ์งธ๋ก ์ผ์นํ๋ ๋ฌธ์๋ฅผ ์์ ํ๋ฉฐ, ๊ฒฐ๊ณผ๋ก ์์ ๋ ๋ฌธ์์ ๊ฐ์๋ฅผ ๋ฐํํฉ๋๋ค.
2. ์ฌ๋ฌ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ: updateMany()
์ฌ๋ฌ ๋ฌธ์๋ฅผ ๋์์ ์์ ํ๋ ค๋ฉด updateMany()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ด๊ฐ 30 ์ด์์ธ ๋ชจ๋ ์ฌ์ฉ์์ ์ํ๋ฅผ 'Active'๋ก ์
๋ฐ์ดํธํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// ์ฌ๋ฌ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์์
async function updateMultipleData() {
try {
await client.connect();
console.log('MongoDB์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค.');
const db = client.db(dbName);
const collection = db.collection('users');
// ๋์ด๊ฐ 30 ์ด์์ธ ๋ชจ๋ ์ฌ์ฉ์์ ์ํ๋ฅผ 'Active'๋ก ์
๋ฐ์ดํธ
const result = await collection.updateMany({ age: { $gte: 30 } }, { $set: { status: 'Active' } });
console.log('์
๋ฐ์ดํธ๋ ๋ฌธ์ ์:', result.modifiedCount);
} catch (error) {
console.error('๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์ค ์ค๋ฅ ๋ฐ์:', error);
} finally {
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
}
}
updateMultipleData();
์ ์ฝ๋๋ ๋์ด๊ฐ 30 ์ด์์ธ ๋ชจ๋ ์ฌ์ฉ์์ ์ํ๋ฅผ 'Active'๋ก ์
๋ฐ์ดํธํ๋ ์์์
๋๋ค. updateMany()
๋ฉ์๋๋ ์กฐ๊ฑด์ ๋ง๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์์ ํ๋ฉฐ, ์์ ๋ ๋ฌธ์์ ์๋ฅผ ๋ฐํํฉ๋๋ค.
3. ๋ฐ์ดํฐ์ ํ๋ ์ถ๊ฐํ๊ธฐ: $set
์ฐ์ฐ์
๊ธฐ์กด ๋ฌธ์์ ์๋ก์ด ํ๋๋ฅผ ์ถ๊ฐํ ๋๋ $set
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋ ์ฌ์ฉ์์๊ฒ 'membership' ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ๊ฐ์ 'Free'๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// ํ๋ ์ถ๊ฐ ์์
async function addFieldToAllUsers() {
try {
await client.connect();
console.log('MongoDB์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค.');
const db = client.db(dbName);
const collection = db.collection('users');
// ๋ชจ๋ ์ฌ์ฉ์์๊ฒ 'membership' ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ๊ฐ์ 'Free'๋ก ์ค์
const result = await collection.updateMany({}, { $set: { membership: 'Free' } });
console.log('ํ๋๊ฐ ์ถ๊ฐ๋ ๋ฌธ์ ์:', result.modifiedCount);
} catch (error) {
console.error('ํ๋ ์ถ๊ฐ ์ค ์ค๋ฅ ๋ฐ์:', error);
} finally {
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
}
}
addFieldToAllUsers();
์ ์ฝ๋๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ 'membership' ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ํด๋น ํ๋ ๊ฐ์ 'Free'๋ก ์ค์ ํ๋ ์์์
๋๋ค. $set
์ฐ์ฐ์๋ ๊ธฐ์กด ํ๋๋ฅผ ์์ ํ๊ฑฐ๋ ์ ํ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ ์ผ๋ถ ์์ ํ๊ธฐ: $inc
์ฐ์ฐ์ ์ฌ์ฉ
์ซ์ ํ๋์ ๊ฐ์ ์ฆ๊ฐ์ํค๊ฑฐ๋ ๊ฐ์์ํค๋ ค๋ฉด $inc
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋ ์ฌ์ฉ์์ ๋์ด๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// ๋ฐ์ดํฐ ์ผ๋ถ ์์ ์์
async function incrementUserAge() {
try {
await client.connect();
console.log('MongoDB์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค.');
const db = client.db(dbName);
const collection = db.collection('users');
// ๋ชจ๋ ์ฌ์ฉ์์ ๋์ด๋ฅผ 1์ฉ ์ฆ๊ฐ
const result = await collection.updateMany({}, { $inc: { age: 1 } });
console.log('๋์ด๊ฐ ์ฆ๊ฐ๋ ๋ฌธ์ ์:', result.modifiedCount);
} catch (error) {
console.error('๋์ด ์ฆ๊ฐ ์ค ์ค๋ฅ ๋ฐ์:', error);
} finally {
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
}
}
incrementUserAge();
์ ์ฝ๋๋ ๋ชจ๋ ์ฌ์ฉ์์ ๋์ด๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ ์์์
๋๋ค. $inc
์ฐ์ฐ์๋ ์ง์ ๋ ํ๋์ ๊ฐ์ ์ฆ๊ฐ์ํค๊ฑฐ๋ ๊ฐ์์ํฌ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
MongoDB ์ฐ๊ฒฐ ์ข ๋ฃ
๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์์
์ด ์๋ฃ๋ ํ์๋ MongoDB ์ฐ๊ฒฐ์ ์์ ํ๊ฒ ์ข
๋ฃํด์ผ ํฉ๋๋ค. client.close()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด MongoDB ์ฐ๊ฒฐ์ ์ข
๋ฃํ ์ ์์ต๋๋ค.
// MongoDB ์ฐ๊ฒฐ ์ข
๋ฃ
await client.close();
console.log('MongoDB ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋์์ต๋๋ค.');
๊ฒฐ๋ก
์ด๋ฒ ๊ธ์์๋ Node.js์ MongoDB๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์์ต๋๋ค. MongoDB์ updateOne()
๊ณผ updateMany()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฌธ์๋ฅผ ์ฝ๊ฒ ์์ ํ ์ ์์ผ๋ฉฐ, $set
๊ณผ $inc
์ ๊ฐ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ํ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ฐ์ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋๋ฅผ ๋ฐํ์ผ๋ก MongoDB์์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์
๋ฐ์ดํธ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ