mongoDB ๊ธฐ์ด๋ถํฐ ์ค๋ฌด๊น์ง(feat. Node.js)
mongoDB, NoSQL ์์ฆ ๋ง์ด ๋ค๋ฆฌ์ง๋ง ์์ง์ ๋ฏ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ๊ฐ์? ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDS/SQL)์ฒ๋ผ ์ฌ์ฉํ๊ณ ๊ณ์์ง๋ ์์ผ์ ๊ฐ์? ์๋ฌด๋ฆฌ ์ข์ ๊ธฐ์ ๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ญํจ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋์ ๋ชฝ๊ณ ๋๋น ์ฌ์ฉ ์คํจ ์ฌ๋ก๋ ์ข ์ข ๋ณด์ด๋๋ฐ์. ์ด ๊ฐ์๋ mongoDB๋ฅผ ์ต๋ํ mongoDB์ค๋ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ ์ค๋ฌด ๋ ธํ์ฐ๊น์ง ๊ฐ๋ฅด์ณ๋๋ ค์.
์๊ฐ์ 1,350๋ช
๋์ด๋ ์ด๊ธ
์๊ฐ๊ธฐํ ๋ฌด์ ํ

- ๋ฏธํด๊ฒฐ
option usecreateindex is not supported ์ค๋ฅ ๋๋ฉด์
await mongoose.connect(MONGO_URL); // ์ ๊ฑฐ ํ์๊ณ ์ฌ์ฉ ํ์ธ์ // ๋ฒ์ 6๋ถํฐ ํด๋น ์ต์ ์ ์ฌ์ฉํ์ง ์์๋ ๋ผ์<img src="https://cdn.inflearn.com/public/files
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง์ด๊ด์ฉ
ใป
0
139
1
- ๋ฏธํด๊ฒฐ
Schemaless ํน์ฑ์ ์ฌ์์ ๊ฒ์ํ๋ฉด์ด ๋์์
Schemaless ํน์ฑ์ ์ฌ์์ ๊ฒ์ํ๋ฉด์ด ๋์์ ์๋ก๊ณ ์นจํด๋ ๊ฐ์ ํ์์ด ๋์ค๋ค์ ใ <img src="https://cdn.inflearn.com/public/files/posts/4f2b90cd-24f2-401d-b82e-63bb64698114/แแ ณแ
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง์ฌํ์ต
ใป
0
234
1
- ๋ฏธํด๊ฒฐ
user ๋ด์ฅ ์ ref ํ๋ ํ์์ฑ
์๋ ํ์ธ์ !์ ์ตํ ๊ฐ์ ๊ฐ์ฌํฉ๋๋ค. Blog.js์์ BlogSchema๋ฅผ ๋ณด๋ฉด,user๋ฅผ ๋ด์ฅํ์๋๋ฐ,_id์ ref ํ๋๊ฐ ๊ทธ๋๋ก ์๋๋ผ๊ตฌ์.์ฌ์ค populate ํ์ง ์์ ๊บผ๋ฉด ref
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋งmaple V
ใป
0
236
1
- ๋ฏธํด๊ฒฐ
await ๊ด๋ จํด์ ์ง๋ฌธ๋๋ฆด๊ฒ ์์ต๋๋ค!!
์๋ ํ์ธ์ ๊ฐ์ฌ๋ !! ใ ใ ๊ฐ์ ์ฌ๋ฐ๊ฒ ๋ฃ๊ณ ์์ต๋๋ค. async await ๋ฐฉ์์ด ์ฝํ๋ฆฐ์ ์ฝ๋ฃจํด๊ณผ ๊ต์ฅํ ์ ์ฌํ๋ค๊ณ ์๊ฐ์ด ๋๋๋ฐ ๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ด Promise.all ๋์ await๋ฅผ ๋ฆ์ถ๋ ๋ฐฉ์์ผ๋ก ํ์ด์จ๋ ๋๊ฐ์ด ๋์
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋งchhong
ใป
0
289
2
- ๋ฏธํด๊ฒฐ
์น์ 6์ 3๋ฒ์งธ ๊ฐ์ fakerํ์ผ์ด ์ด๋์๋์?
์ ๊ฐ์์ ์ฌ๋ ค๋์ผ์ จ๋ค๊ณ ํ์ จ๋๋ฐ Mongoose v6 ์ ๋ฐ์ดํธ ๊ด๋ จ ๊ณต์ง๋ง ์๊ณ faker ๊ด๋ จ ์ฝ๋๋ฅผ ๋ชป ์ฐพ๊ฒ ์ด์ ์ง๋ฌธ ๋จ๊น๋๋ค.
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง์์ฑ์ ์์
ใป
0
305
1
- ๋ฏธํด๊ฒฐ
$elemMatch ์ง๋ฌธ์ด ์์ต๋๋ค.
๊ฐ์ ์ฐพ์ ๋ $elemMatch ๋ก ๊ฐ์ธ์ค์ผ ๋ ๋ค ํด๋นํ๋ ๊ฐ์ ์ฐพ์ ์ ์๋ค๊ณ ํด์ฃผ์ จ๋๋ฐ์.๋ฐ๋๋ก, $elemMatch ๋ฅผ ์ฐ์ง ์์ผ๋ฉด or ์กฐ๊ฑด์ผ๋ก ๊ฒ์์ด ๋๋ค๊ณ ์ดํดํ์ต๋๋ค. ์ฌ๊ธฐ์<img sr
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง๋ฐ์ข ํ
ใป
0
242
1
- ํด๊ฒฐ
DB ์ ๋ฐ์ดํธ์ ์คํจํ์ ์ํฉ์์ ๋์ฒ๋ ์ด๋ป๊ฒ ํ ์ ์๋์.
await Promise.all([ comment.save(), Blog.updateOne({ _id: blogId }, { $push: { comments: comment } }), ]);
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง๋ฐ์ข ํ
ใป
2
760
2
- ๋ฏธํด๊ฒฐ
๋ธ๋ก๊ทธ์ user ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด์
์ฝ๋ ์์ ์ populate ๋ถ๋ถ์ ๋ํ ์๊ฐ๋ ์ต์ํ ํ๊ธฐ ์ํด์ ์์ฑํ๋ ์์ ์ user ์ ์ต์ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์๋๊ฑฐ ๊ฐ์๋ฐ์.์ด๋ ๊ฒ ์ ๊ทผํ๋ฉด, ํ๋ฉด ์ค์ฌ์ผ๋ก ๋ชจ๋ธ์ด ์ค๊ณ๊ฐ ๋๋๊ฒ ์๋๊น์?์๊ตฌ์ฌํญ์ด ๋ฐ๋๊ฑฐ๋, ๋ค๋ฅธ ์๋น์ค์์ ํด
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง๋ฐ์ข ํ
ใป
0
230
1
- ๋ฏธํด๊ฒฐ
blog ๋ฐ์ดํฐ ์์ฑ์ user ๊ด๋ จ ์ค๋ฅ
๋ธ๋ก๊ทธ ์์ฑํ ๋ user ๊ฐ์ฒด๋ฅผ ๋ฃ์ผ๋ฉด, ๋ฆฌํด ๊ฐ์ผ๋ก user ๊ฐ์ฒด๋ฅผ ๋ฐ์ ์ ์๋ ์ด์ ์ด ์๋ค๊ณ ํด์, ์ ๋ฌํด๋ดค๋๋ฐ์.์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.blog validation failed: user: Cast t
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง๋ฐ์ข ํ
ใป
0
347
1
- ํด๊ฒฐ
age ์์ธ ์ฒ๋ฆฌ๋ฅผ ๋ณ๋๋ก ํ์ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
์ด๋ฏธ Schema ์ ์ ํ ๋ age ๋ฅผ number ๋ก ํ๊ธฐ ๋๋ฌธ์, ๋๋น์ ์ ์ฅํ ๋ number ๊ฐ์ ์ ๋ฌํ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํด์ catch ์์ ์ฒ๋ฆฌํ ์ ์์๊ฑฐ ๊ฐ์๋ฐ์.์ ๋ฐ์ดํธ ์ ์ ํ๋๋ฅผ validation ํ๋ฉด ๋ชจ๋ ํ๋์ ๋ํด์
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง๋ฐ์ข ํ
ใป
2
298
2
- ๋ฏธํด๊ฒฐ
delete ๋ฉ์๋๊ฐ ๋ง์ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
User.findOneAndDelete User.deleteOne User.findByIdAndDelete์ด๋ ๊ฒ ๋ง์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด์ฃผ๋ ์ด์ ๊ฐ ์์๊น์?๋จ์ํ ํธ์๋ฅผ ์ํ ๊ฒ์ธ์ง, ์ํฉ์ ๋ฐ๋ผ ๊ณจ๋ผ์ฐ๋
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง๋ฐ์ข ํ
ใป
0
175
1
- ๋ฏธํด๊ฒฐ
unique validation ์ฒ๋ฆฌ
unique ์์ ์ค๋ณต์ด ๋ฐ์ํ๋ฉด catch ์ ์กํ๋๋ฐ, ์ด ๋ unique ์๋ฌ ๋๋ฌธ์ ๋ฐ์ํ ์๋ฌ์ธ์ง ์ด๋ป๊ฒ ์๊ณ ์ผ์ด์ค๋ฅผ ๋๋ ์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ ํ ์ ์์๊น์?
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง๋ฐ์ข ํ
ใป
0
293
1
- ํด๊ฒฐ
updateMany์์ user._id๋ฅผ ๋ชป์ฐพ๋ ์ํฉ
๊ฐ์ข๋๋ก Blog.updateMany({ "user._id": userId }, { "user.name": name })๋ก ํ๋ ๋ธ๋ก๊ทธ ๋ฐ์ดํฐ ์ ์ ์ ๋ณด๊ฐ ๋ณ
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง์์ฑ์ ์์
ใป
1
390
1
- ํด๊ฒฐ
find() ๊ฐ ๋ฆฌํดํ๋ instance member
nestjs + mongoose ์กฐํฉ์ด์ง๋ง, <a target="_blank" rel="noopener noreferrer nofollow" href="https://velog.io/@modolee/mongodb-document-to-javascrip
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง์ ์๊ธฐ
ใป
1
426
3
- ํด๊ฒฐ
๋ชฝ๊ณ db๋ฅผ ๋ฐฑ์ ๋ฐฉ๋ฒ์ ๋ถํํฉ๋๋ค.
mongodump๋ก ๋ก์ปฌ์ ์ค์น๋ ๋ชฝ๊ณ db๋ฅผ ๋ฐฑ์ ํ๋ ค ํ๋๋ฐ ์๋์ ์ค๋ฅ๊ฐ ๋์ต๋๋ค.ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ถํํฉ๋๋ค.- (mongodump.exe)๋ฅผ ๋ณ๋๋ก ๋ค์ด๋ฐ์์ผ ํ๋์?-์ต์ ๋ฒ์ ์๋ mongodump.exeํ์ผ์ด ์ค์น๋์ด ์์ง ์์ต๋๋ค.<
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋งJongwoo Park
ใป
0
602
1
- ํด๊ฒฐ
์ธ๋ฑ์ค ์์ฑ์์
์ ์๋, ์๋ ํ์ธ์! ์ข์ ๊ฐ์ ์ ๋ง๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค!์ด๋ฒ ๊ฐ์๋ฅผ ๋ณด๋ฉด์, ๊ถ๊ธํ ๊ฒ ์๊ฒผ๋๋ฐ์.์ด๋ฒ๊ฐ์์์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด์, ํ์์๋๊ฐ ํจ์ฌ ๋นจ๋ผ์ง๋ค๋ ๊ฑธ ์๊ฒ๋์์ต๋๋ค. ๊ธฐ์กด์ ์์ฑ๋์ด์๋ (์ธ๋ฑ์ค๊ฐ ๊ฑธ๋ ค์์ง ์์)๋ฐ์ดํฐ
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋งgoogle_user
ใป
0
707
1
- ํด๊ฒฐ
$pull ๋ฌธ๋ฒ์ ๋ํ ์ง๋ฌธ
์ ์๋, ์๋ ํ์ธ์. ์ข์ ๊ฐ์ ๋๋ฌด ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ต๋ณ๋ ์ํด์ฃผ์ ์ ๋๋ฌด ๊ฐ์ฌ๋๋ ค์!์ด๋ฒ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์,Blog.updateMany( { "comments.user": userId }
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋งgoogle_user
ใป
0
358
1
- ํด๊ฒฐ
comment์ id๊ฐ ์์ฑ๋๋ ์์
์ ์๋ ์๋ ํ์ธ์. ๊ฐ์ ์ ๋ง ์๋ฃ๊ณ ์์ต๋๋ค. ๊ฐ์ฌ๋๋ฆฝ๋๋ค.๊ฐ์๋ฅผ ๋ณด๋ค๊ฐ ๊ถ๊ธํ ์ ์ด ์๊ฒผ๋๋ฐ์. ๋ธ๋ก๊ทธ์ ์ฝ๋ฉํธ๋ฅผ ๋ฃ์ ๋, ์ด๋ ๊ฒ ํ๋๋ฐ,const comment = new Comment({ co
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋งgoogle_user
ใป
1
298
1
- ํด๊ฒฐ
๋ฆฌํฉํ ๋ง ๊ฐ์์์ ๋ผ์ฐํฐ ๋ฆฌํฉํ ๋ง ์ ๊ฐ์ฐ์ฐ์(...)
์ ์๋ ์๋ ํ์ธ์. ์ข์๊ฐ์ ์ ๋ง๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค.๋ฆฌํฉํ ๋ง ๊ฐ์์์ ๋ผ์ฐํฐ๋ค์ Index.js๋ก ํตํฉ์์ผ์ค ๋ module.exports = { .
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋งgoogle_user
ใป
1
313
1
- ํด๊ฒฐ
session.abortTransaction()์ ๋ํ ์ค์ ์์ ๋ฌธ์
์๋ ๋ช ๋ น์ด๋ฅผ ํตํด transaction์ด ์คํจํ์ ๋ ์๋ณตํ๋ค๊ณ ํ๋๋ฐ, ์ ๋ฐ ๊ฒ์ catch๋ฌธ์ ๋ฃ์ด์ผ ํ๋ ๊ฒ์ด ๋ง๋์? ์๋๋ฉด if else๋ก ๋ฌธ์ ์ ์ ๋ฐ๊ฒฌํ์ ๋ ์ฒ๋ฆฌํ๊ฒ ํ๋ ๊ฑธ๊น์?์ฆ, ์ ์ฝ๋๋ฅผ ์ค์ ๋ก ์ฌ์ฉํ ๋,
javascriptnode.jsawsmongodbrest-apidbms/rdbms๋ฐ์ดํฐ-์์ง๋์ด๋ง๋ต๋
ใป
0
284
1






