๐ญย ์ฅ๋จ์
์ฅ์ ๋จ์ ๐ฅย ๋ฐ์ดํฐ ์ฝ์
DB๋ช
์ ์ฐ๊ณ collection ๋ช
์ ์จ์ ์์ฑํ๊ณ , insertOne์ ์ด์ฉํด ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ ์ ์๋ค.์๋ ์ฝ๋๋ ์ฝ๋ฐฑ์ ํ์ฉํ ๋ฐฉ๋ฒ์ด๋ค.const { MongoClient, ServerApiVersion } = require('mongodb');
const uri =
'mongodb+srv://j56237:qwer1234@cluster0.03qkgmh.mongodb.net/?retryWrites=true&w=majority';
const client = new MongoClient(uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
serverApi: ServerApiVersion.v1,
});
client.connect((err) => {
const test = client.db('kdt5').collection('test');
test.deleteMany({}, (deleteErr, result) => {
if (deleteErr) throw deleteErr;
console.log(result);
test.insertOne(
{
name: 'JKE',
nickName: 'goorm',
},
(insertErr, result) => {
console.log(result);
const findCursor = test.find({});
findCursor.toArray((err, data) => {
console.log(data);
});
},
);
});
});
์ฝ์
ํ ๋ฐ์ดํฐ๋ Atlas์์ ํ์ธํ ์ ์๋ค.find() ์์ ๊ฐ์ฒด๊ฐ ๋น ๊ฐ์ฒด์ด๋ฏ๋ก ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค.์ฝ๋ฐฑ์ ์ด์ฉํ ๋ฐฉ๋ฒ์ ์ฝ๋์ ์์ ์ด ์ฉ์ดํ์ง๋ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.insertOne
ํ๋์ ๋ํ๋จผํธ๋ฅผ ์ฝ์
ํ๋ค.client.connect((err) => {
const test = client.db("kdt5").collection("test");
test.deleteMany({}, (deleteErr, deleteResult) => {
if (deleteErr) throw deleteErr;
test.insertOne(
{
name: "pororo",
age: 5,
},
(insertErr, insertResult) => {
if (insertErr) throw insertErr;
console.log(insertResult);
}
);
});
});
์์ชฝ deleteMany๋ ๋น ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๋ ์ฝ๋์ด๋ค.์ฒซ๋ฒ์งธ ์ธ์์๋ ๊ฐ์ฒด ๋ฐ์ดํฐ / ๋๋ฒ์งธ ์ธ์์๋ Err์ Result๋ฅผ ๊ฐ์ง ์ฝ๋ฐฑํจ์๋ฅผ ๊ฐ์ง๋ค.insertMany
์ฌ๋ฌ ๋ํ๋จผํธ๋ฅผ ํ๋ฒ์ ์ฝ์
ํ๋ค.์ฝ์
ํ ๋ํ๋จผํธ๋ ๋ฐฐ์ด์ ๋ด๊ธด ๊ฐ์ฒด ํํ๋ก ์ ๋ฌ๋๋ค.client.connect((err) => {
const test = client.db('kdt5').collection('test');
test.deleteMany({}, (deleteErr, deleteResult) => {
if (deleteErr) throw deleteErr;
console.log(deleteResult);
test.insertMany(
[
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
],
(insertErr, insertResult) => {
if (insertErr) throw insertErr;
console.log(insertResult);
},
);
});
});
๐ย ๋ฐ์ดํฐ ์ญ์
deleteOne
์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฅ ์ฒ์์ ๋ํ๋จผํธ ํ๋๋ฅผ ์ญ์ ํ๋ค.์กฐ๊ฑด์ ๊ฐ์ฒด ํํ๋ก์ deleteOne์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๋ค.client.connect((err) => {
const test = client.db('kdt5').collection('test');
test.deleteMany({}, (deleteErr, deleteResult) => {
if (deleteErr) throw deleteErr;
console.log(deleteResult);
test.insertMany(
[
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
],
(insertErr, insertResult) => {
if (insertErr) throw insertErr;
console.log(insertResult);
test.deleteOne({ name: 'crong' }, (deleteOneErr, deleteOneResult) => {
if (deleteOneErr) throw deleteOneErr;
console.log(deleteOneResult);
});
},
);
});
});
name์ด โcrongโ์ธ ๊ฐ์ ์ง์์ค๋ค.๋ฝ๋ก๋ก์ ๋ฃจํผ๋ง DB์ ๋จ๊ฒ๋๋ค.deleteMany
์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ์ญ์ ํ๋ค.์กฐ๊ฑด์ ๊ฐ์ฒด ํํ๋ก์ deleteOne์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๋ฉด ๋๋ค.client.connect((err) => {
const test = client.db('kdt5').collection('test');
test.deleteMany({}, (deleteErr, deleteResult) => {
if (deleteErr) throw deleteErr;
console.log(deleteResult);
test.insertMany(
[
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
],
(insertErr, insertResult) => {
if (insertErr) throw insertErr;
console.log(insertResult);
test.deleteMany(
{ age: { $gte: 5 } },
(deleteManyErr, deleteManyResult) => {
if (deleteManyErr) throw deleteManyErr;
console.log(deleteManyResult);
},
);
},
);
});
});
gte๋ Greater Than Eqaul์ ์ฝ์๋ก ํฌ๊ฑฐ๋ ์์๋๋ฅผ ๋ปํ๋ค.๋ฐ๋ผ์ ์ ์ฝ๋๋ age๊ฐ 5์ด์์ด๋ฉด ์ง์ฐ๊ฒ ๋๋ค.ํฌ๋กฑ๋ง DB์ ๋จ๊ฒ๋๋ค.๐งย ๋ฐ์ดํฐ ์์
updateOne
์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฅ ์ฒ์์ ๋ํ๋จผํธ ํ๋๋ฅผ ์์ ํ๋ค.์กฐ๊ฑด์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๊ณ , ๋ณ๊ฒฝ์ ์ ๋๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๋ค.๋ณ๊ฒฝ๋ถ๋ถ์ $set:์ ์ฌ์ฉํ๋ค.client.connect((err) => {
const test = client.db('kdt5').collection('test');
test.deleteMany({}, (deleteErr, deleteResult) => {
if (deleteErr) throw deleteErr;
console.log(deleteResult);
test.insertMany(
[
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
],
(insertErr, insertResult) => {
if (insertErr) throw insertErr;
console.log(insertResult);
test.updateOne(
{ name: 'loopy' },
{ $set: { name: '๋ฃจํผ' } },
(updateOneErr, updateOneResult) => {
if (updateOneErr) throw updateOneErr;
console.log(updateOneResult);
},
);
},
);
});
});
์ด๋ ๊ฒ ๋๋ฉด loopy๋ง ์ด๋ฆ์ด ํ๊ธ โ๋ฃจํผโ๋ก ๋ณํ๊ฒ ๋๋ค.updateMany
์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ์์ ํ๋ค.์กฐ๊ฑด์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๊ณ , ๋ณ๊ฒฝ์ ์ ๋๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๋ค.๋ณ๊ฒฝ๋ถ๋ถ์ $set:์ ์ฌ์ฉํ๋ค.client.connect((err) => {
const test = client.db('kdt5').collection('test');
test.deleteMany({}, (deleteErr, deleteResult) => {
if (deleteErr) throw deleteErr;
console.log(deleteResult);
test.insertMany(
[
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
],
(insertErr, insertResult) => {
if (insertErr) throw insertErr;
console.log(insertResult);
test.updateMany(
{ age: { $gte: 5 } },
{ $set: { name: '๋์ด๊ฐ 5์ด ์ด์์ธ ์น๊ตฌ๋ค' } },
(updateManyErr, updateManyResult) => {
if (updateManyErr) throw updateManyErr;
console.log(updateManyResult);
},
);
},
);
});
});
์ด๋ ๊ฒ ํ๋ฉด ๋ฝ๋ก๋ก์ ๋ฃจํผ์ name์ด โ๋์ด๊ฐ 5์ด ์ด์์ธ ์น๊ตฌ๋คโ๋ก ๋ณ๊ฒฝ๋๋ค.$set ๋ง๊ณ $inc๋ ์กด์ฌํ๋ค. ์ด๋ ์๋ ๊ฐ์ +๋ฅผ ์์ผ์ค๋ค.๐ฏย ๋ฐ์ดํฐ ๊ฒ์
findOne
๊ฒ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ต์ด์ ๋ํ๋จผํธ ํ๋๋ฅผ ์ฐพ์์ค๋ค.client.connect((err) => {
const test = client.db('kdt5').collection('test');
test.deleteMany({}, (deleteErr, deleteResult) => {
if (deleteErr) throw deleteErr;
console.log(deleteResult);
test.insertMany(
[
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
],
(insertErr, insertResult) => {
if (insertErr) throw insertErr;
console.log(insertResult);
test.findOne({ name: 'loopy' }, (findOneErr, findOneData) => {
if (findOneErr) throw findOneErr;
console.log(findOneData);
});
},
);
});
});
name์ด โloopyโ์ธ ๊ฒ์ ์ฐพ์ console์ ์ฐ์ด์ค๋ค.find
findMany๋ ์๊ณ find๊ฐ ์๋ค.์กฐ๊ฑด์ ๋ง๋ ๋ํ๋จผํธ๋ฅผ ์ ๋ถ ์ฐพ์์ค๋ค.๋จ, find๋ ๋
ํนํ ํน์ฑ์ ๊ฐ์ง๋ค.client.connect((err) => {
const test = client.db('kdt5').collection('test');
test.deleteMany({}, (deleteErr, deleteResult) => {
if (deleteErr) throw deleteErr;
console.log(deleteResult);
test.insertMany(
[
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
],
(insertErr, insertResult) => {
if (insertErr) throw insertErr;
console.log(insertResult);
const findCursor = test.find({ age: { $gte: 5 } });
console.log(findCursor);
findCursor.toArray((toArrErr, arrData) => console.log(arrData));
},
);
});
});
์ด๋ ๊ฒ ํ๋ฉด 5์ด ์ด์์ธ ๋ฝ๋ก๋ก์ ๋ฃจํผ๋ง ๊ฐ์ ธ์ค๊ฒ ๋๋ค.findCursor๋ ๋ค์์ฒ๋ผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ค.๐ ย ๋น๊ต์
$eq: ๊ฐ์ ๋$gt: ํด ๋$gte: ํฌ๊ฑฐ๋ ๊ฐ์ ๋$lt: ์์ ๋$lte: ์๊ฑฐ๋ ๊ฐ์ ๋$ne: ๋ค๋ฅผ ๋$in: ๋ฐฐ์ด์ ์ง์ ๋ ๊ฐ ์ค ํ๋์ ์ผ์นํ ๊ฐ$nin: ๋ฐฐ์ด์ ์ง์ ๋ ๊ฐ๊ณผ ์ผ์นํ์ง ์๋ ๊ฐusers.updateMany(
{
name: { $ne: 'loopy' },
},
{
$set: {
name: '๋ฃจํผ ์๋',
},
},
๐ฅฏย ๋
ผ๋ฆฌ์
$or: ์กฐ๊ฑด๋ค ์ค ํ๋๋ผ๋ true๋ฉด ๋ฐํ$and: ์กฐ๊ฑด๋ค์ด ๋ชจ๋ true์ผ ๋ ๋ฐํ$not: ์กฐ๊ฑด์ด false์ผ๋ ๋ฐํ$nor: ์กฐ๊ฑด๋ค์ด ๋ชจ๋ false์ผ ๋ ๋ฐํconst cusor = users.find({
$and: [{ age: { $gte: 5 } }, { name: 'loopy' }],
});
cursor.toArray((err, data) => {
console.log(data);
});
๐ฆดย Async / Await๋ก ๋ฐ๊พธ๊ธฐ
์ฝ๋ฐฑํจ์๋ ์ ์ง๋ณด์๊ฐ ๋ถํธํ ๋จ์ ์ด ์๋ค.async function main() {
try {
await client.connect();
const test = client.db('kdt5').collection('test');
await test.deleteMany({});
await test.insertOne({ name: 'pororo', age: 5 });
await test.deleteMany({});
await test.insertMany([
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
]);
await test.deleteOne({ name: 'crong' });
await test.deleteMany({});
await test.insertMany([
{ name: 'pororo', age: 5 },
{ name: 'crong', age: 4 },
{ name: 'loopy', age: 6 },
]);
await test.updateMany({ age: { $gte: 5 } }, { $set: { age: 10 } });
const findCursor = test.find({ age: { $gte: 10 } });
const dataArr = await findCursor.toArray();
console.log(dataArr);
} catch (err) {
console.error(err);
}
}
main();
async / await๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํํํ ์ ์๋ค.์ฝ๋ ๊ฐ๋
์ฑ์ด ์ข์์ง๊ณ ์๋ ์ค์ ๊ฒ์ ๋ณผ ์ ์๋ค.๐ฅย Mongoose
MongoDB๋ ์ฌ์ฉ์์ ์ ์ฝ์ด ์ ํ ์์ด์ ํธ๋ฆฌํ๋ค.๊ทธ๋ฌ๋ ์ด ๋๋ฌธ์ key์ ๊ฐ์ด ๋ฌ๋ผ์ง๋ ๋ฑ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์ ์๋ค.์ด๋ Mongoose๋ก ํด๊ฒฐํ ์ ์๋ค.์คํค๋ง ์์ฑ
/models/user.jsconst mongoose = require('mongoose');
const { Schema } = mongoose;
const userSchema = new Schema(
{
id: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
createAt: {
type: Date,
default: Date.now,
},
},
{
collection: 'mongoose-user',
},
);
module.exports = mongoose.model('User', userSchema);
์์ฒ๋ผ ํ์
๊ณผ required ๋ฑ์ ์ ํด์ค ์ ์๋ค.CRUD ์ฟผ๋ฆฌ
mongoDB์ ๋ชจ๋ ๋์ผํ์ง๋ง insertOne ๋์ create๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.