๋ชฝ๊ณ DB ์ธํ
- ๋ชฝ๊ณ DB๋ ์คํ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ Document๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ ๊ฒ์ด ํน์ง์ด๋ค.
- ๋ชฝ๊ณ DB Document๋ ๋ฐ์ดํฐ๋ฅผ JSON ํํ์ ๊ตฌ์กฐ๋ก ์ ์ฅํ๋ฉฐ, ํน์ฑ๋ณ ๋ฐ์ดํฐ ๊ฐ์ฒด์ ํค-๊ฐ ์กฐํฉ์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
- ์ด ์ ์ฅ ์์คํ ์ JavaScript ๋ฌธ๋ฒ๊ณผ ๋น์ทํ๋ค.
(๋ชฝ๊ณ DB๋ Document๋ฅผ BSON : Binary Form of JSON ํํ๋ก ์ ์ฅํ๋ค.)
์ํ๊น...๊ฒ๋.. ๋ชฝ๊ณ DB๋ ๊ด๊ณํ DB๊ฐ ์๋๋ผ ๋น๊ด๊ณํ DB ์์คํ ์ด๋ค....
๋ชฝ๊ณ DB ์ ธ์์ ๋ช ๋ น์ด ์คํ
๋จผ์ mongo๋ฅผ ์ ๋ ฅํด ๋ชฝ๊ณ DB ์ ธ๋ก ์ง์ ํ๋ค.
(์ฌ๊ธฐ์ ๋ฐ๋ณด๊ฐ์ด ์ ๋ฅผ ์ข ๋ง์ด ๋จน์๋ค. ์๋ฌด๋ฆฌ mongo๋ฅผ ์ ๋ ฅํด๋ ์ ธ๋ก ์ง์ ์ด ์๋๊ณ ์๊พธ ์๋ ๋ช ๋ น์ด?๋ผ๊ณ ํ๋๋ฐ ์ง์ง ํฐ๋ฏธ๋ ๋ง์ด ์์จ๋ด์ ํ ์ค์์๋ค... ํฐ๋ฏธ๋์์์ ํ์ฌ ์์น๋ฅผ ๋ชฝ๊ณ DB๊ฐ ์ค์น๋ ์์น๋ก ์ฎ๊ธฐ๊ณ ๋์ ํด์ผ ์คํ๋จ. ํ์ฌ์ปด ๊ฐ์ ๊ฒฝ์ฐ์ C:\Program Files\MongoDB\Server\5.0\bin)
์ง์ ํ๊ณ ๋๋ฉด > ํ์๋ฅผ ์์์ผ๋ก ๋ชฝ๊ณ DB ์ ธ์ ์ง์ ๋จ์ ํ์ธํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ๋ฅผ ๋ณผ์ ์๋ ๋ช ๋ น์ด db๋ฅผ ์ ๋ ฅํด๋ณด์๋ค.
์์์ ์ํด ๋ชฝ๊ณ DB์๋ test ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๋ค์ด์๋ค.
์ด ๋ฐ์, ๋ค๋ฅธ ์ ธ ๋ช ๋ น์ด๋ค์๋ ์ด๋ฐ ๊ฒ๋ค์ด ์๋ค.
๋ช ๋ น์ด | ์ค๋ช |
> show dbs | ๋ชจ๋ ๊ฐ์ฉ DB๋ฅผ ๋ณผ ๋ |
> use <์๋ก์ด DB์ด๋ฆ> | ์๋ก์ด DB๋ฅผ ๋ง๋ค๊ณ ์ค์์นญ |
> db | DB์ ๋ด๋ถ๋ฅผ ๋ณผ ์ ์์. ** ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๊ธฐ ์ ๊น์ง๋ ์๋ก์ด DB๊ฐ DB๋ฆฌ์คํธ์ ๋ํ๋์ง ์๋๋ค. |
> db.<์ปฌ๋ ์
์ด๋ฆ>.insert({ name: "Jon", email: "Jon@email.com}) |
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์๋ก์ด ๋ฐ์ดํฐ ์ฝ์
** name, email๊ณผ ๊ฐ์ ์ปฌ๋ ์ ๊ตฌ์กฐ๋ ํจํด์ด ์ ํด์ ธ ์๋๊ฒ ์๋๋ผ ์ด๋ค ๊ฐ์ด๋ผ๋ ์ถ๊ฐํ ์ ์๋ค. (๊ทธ๋ฌ๋ ๊ณ์ ์ด๋ ๊ฒ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ ์ฝ์ ์ ๋ถํ์ํจ -> ๋์ค์ ๋์ด) |
> db.<์ปฌ๋ ์ ์ด๋ฆ>.find() | ์ปฌ๋ ์ ๋ด ์ฝํ ์ธ ๋ชฉ๋ก ๋ณด๊ธฐ |
> db.<์ปฌ๋ ์
์ด๋ฆ>.update({ name: "Jon"}, {name: Jon Wexler"}) |
ํ๋ผ๋ฏธํฐ์ ์ฒซ๋ฒ์งธ ํญ๋ชฉ์ ๋๋ฒ์งธ ํญ๋ชฉ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค. |
> db.<์ปฌ๋ ์
์ด๋ฆ>.delete({ name: "Jon Wexler"}) |
๋งค์นญ๋๋ ๋ํ๋จผํธ๋ฅผ ์ปฌ๋ ์ ์์ ์ญ์ ํ๋ค. |
> db.<์ปฌ๋ ์ ์ด๋ฆ>.deleteMany({}) | ์ปฌ๋ ์
๋ด์ ์๋ ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ์ญ์ ํ๋ค. ** ์ด ๋ช ๋ น์ ์์๋ณต๊ตฌ ๋์ง ์๋๋ค. |
๊ทธ๋์ ํ๋ฒ ์์ ๋ช
๋ น์ด๋ค์ ์ฌ์ฉํด๋ณด์๋ค.
show dbs๋ฅผ ์ ๋ ฅํ์ฌ ๋ณด์ด๋ ๋ชจ๋ DB๋ค์ ๋ฆฌ์คํธ์ด๋ค.
์ค์น์ ๊ฐ์ด ์ค์น๋๋ DB๋ค 3๊ฐ๊ฐ ๋ณด์ธ๋ค. ๋ชจ๋ ์๋ฌด ๋ฐ์ดํฐ๋ ์ ์ฅํ๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ์ฉ๋์ 0์ผ๋ก ํํ๋๋ค.
use <์๋ก์ด DB์ด๋ฆ> ๋ช ๋ น์ด๋ก recipe_db๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋ก ๋ง๋ค๊ณ , ์ค์์นญํด๋ดค๋ค.
์๋ก ๋ง๋ค์ด์ก๊ณ , ์์ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ show dbs ๋ช ๋ น์ด๋ฅผ ํ์๋ ์์ง ๋ํ๋์ง ์๋๋ค.
๊ทธ๋ค์ insert ๋ช ๋ น์ด๋ก contacts๋ผ๋ ์ปฌ๋ ์ (๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๋ฉด ํ ์ด๋ธ)์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋ดค๋ค.
๊ทธ๋ฆฌ๊ณ find ๋ช ๋ น์ด๋ก ๋ชฉ๋ก์ ๋ดค๋๋ฐ ์ฌ๊ธฐ์ ObjectId ๋ผ๋๊ฒ ์๊ธด๊ฑธ ๋ณผ ์ ์๋ค.
**ObjectId : ๋ฐ์ดํฐ๋ฅผ ์ ๋ํฌํ๊ฒ ๋ถ๋ฅํ๊ธฐ ์ํด ๋ชฝ๊ณ DB๊ฐ ์ฌ์ฉํ๋ class. ๊ณ ์ ๊ฐ์ผ๋ก ํน์ ์์ดํ ์ ๊ตฌ๋ถ/์ ์ฅํ๋ค.
+) ๋ชฝ๊ณ DB Compass
๋ชฝ๊ณ DB๋ฅผ ํฐ๋ฏธ๋ ์ ธ์ด ์๋๋ผ GUI๊ธฐ๋ฐ์ ๊ด๋ฆฌ๋๊ตฌ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ํด
์ด๋ ๊ฒ ์๊ฒผ๋ค. show dbs ๋ช ๋ น์ ์ฌ์ฉํด์ ๋ณผ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ํ๋ฉด์ด๋ค.
์๊น ๋ง๋ค์๋ recipe_db๋ฅผ ๋๋ฅด๋ฉด ์ด๋ ๊ฒ ํ ์ด๋ธ(?) ์ฌ๊ธฐ์ ์ปฌ๋ ์ ์ด๋ผํ๋,, ์ํผ ๊ทธ๊ฒ ๋์จ๋ค.
์ฌ๊ธฐ์ ๋ contacts๋ฅผ ํด๋ฆญํ๋ฉด ์ฝ์ ํ๋ ๋ฐ์ดํฐ๊ฐ ๋์จ๋ค.
ํ ์คํธ๋ฅผ ์ํด ๋ฐ์ดํฐ๋ฅผ ์๋กญ๊ฒ ์ถ๊ฐํด๋ณด๊ณ GUIํด์์ ํ์ธํด๋ดค๋ค.
๊ทธ๋ฌ๋๋ ์ด๋ ๊ฒ ๋ฐ์ดํฐ๊ฐ ํ๋ ๋ ์ ์ถ๊ฐ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชฝ๊ณ DB ์ฐ๊ฒฐ
๋จผ์ npm install mongodb -S๋ช ๋ น์ผ๋ก mongodb ํจํค์ง๋ฅผ ์ค์นํ๋ค.
๊ทธ๋ฆฌ๊ณ main.js ์ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
MongoClient ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ชฝ๊ณ DB ๋ชจ๋์ ์์ฒญํ๋ค.
๊ธฐ๋ณธ ํฌํธ๋ก ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ , recipe_db๋ฅผ ์๋ฒ๋ก ํธ์ถํ์ฌ db ๋ณ์์ ์ ์ฅํ๋ค.
(์ ๊ณต๋ ์ด๋ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ค๋ฉด ๋ชฝ๊ณ DB๋ ์ฑ์์ ํ๋๋ฅผ ์์ฑํ๋ค.)
๋ค์์ผ๋ก 20ํ์ ๋ณด๋ฉด contacts ์ปฌ๋ ์ ๋ด์ ์๋ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์ฐพ๋๋ก find()๋ก ์์ฒญํ๊ณ , Array๋ก ๋ฐ๋๋ค.
๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ ์ฝ๋ฐฑ ํจ์์์ ๋๋ ค์ค๋ค. ๊ทธ๋์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์์ ์ถ๋ ฅํ๋ค.
๋ค์์ Node.js ์ฝ๋๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ์ฝ๋์ด๋ค.
contacts ์ปฌ๋ ์ ์ ์ ์ํ๊ณ ์์ดํ ํ๋๋ฅผ ์ฝ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ก๊ทธ ๋ฉ์์ง๋ก ์ถ๋ ฅํ๋ค.
์์ ์ฝ๋๋ฅผ ๋ค ์์ฑํ ๋ค ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ์ฝ์์๋ ์ด๋ ๊ฒ
์๋ ์๋ ๋๊ฐ์ง์ ๋ฐ์ดํฐ์, ์๋ก ๋ฐ์ดํฐ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ฝ์ ๋๋ค๋ ๋ก๊ทธ, ๊ทธ ์์ดํ ์ Id๊น์ง ๋ณด์ฌ์ค๋ค.
+) ์ฌ๊ธฐ์ ์๋ชปํ๊ฒ ๋ฐ์ดํฐ ์ฝ์ ํ๋ ์ฝ๋๋ฅผ ๊ทธ๋ฅ ๋ฐ์๋ค๊ฐ ๋ฐ๋ก ๋นผ์ ํ๋๋ ์ค๋ฅ๊ฐ ๋ฌ์๋ค.
์ ๋ ๊ฒ connect ํจ์ ์์์ ๋ค ์ฒ๋ฆฌํด์ค์ผํ๋ ๊ฒ์ด์๋ค.
๊ทธ๋์ ์ ๋๋ก insert ๋๋ ํ์ธํด๋ณด๋ฉด,
์ ๋๊ฑธ ๋ณผ ์ ์๋ค.
์ด๋ ๊ฒ ํด์ ๋ชฝ๊ณ DB ์ค์น, ๋ช ๋ น์ด, .js์์ ๋ชฝ๊ณ DB์ ์ฐ๊ฒฐ ๊น์ง ์๋ฃํ๋ค^_^.
References
https://mainia.tistory.com/5738
'โ๏ธ 21-2 IPP > Node.js study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Node.js - 16 ์ปจํธ๋กค๋ฌ์ ๋ชจ๋ธ๊ณผ์ ์ฐ๊ฒฐ (0) | 2021.11.03 |
---|---|
Node.js - 15 Mongoose๋ฅผ ์ฌ์ฉํ ๋ชจ๋ธ ์ ์ (0) | 2021.10.29 |
Node.js - 13 Express.js๋ฅผ ํตํ ์ฌ์ดํธ ๊ฐ์ (0) | 2021.10.27 |
Node.js - 12 ์ค์ ๊ณผ ์๋ฌ์ฒ๋ฆฌ (0) | 2021.10.26 |
Node.js - 11 ๋ทฐ์ ํ ํ๋ฆฟ, ๋ ์ด์์ (0) | 2021.10.25 |
๋๊ธ