You Can Become A
๋ฆ๊ฒ ์์ํด๋ ๋๊ตฌ๋ ์ง ๋ ธ๋ ฅํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ด์ !
MongoDB
[MONGO] ๐ ๋ชฝ๊ณ ๋๋น์ ๋ฐ์ดํฐ ๊ด๊ณ ๋ชจ๋ธ๋ง ๐ฏ ์ ๋ฆฌ
๋ชฝ๊ณ ๋๋น ๊ด๊ณ ๋ฐ์ดํฐ ๋ฐฉ์ ๋ชฝ๊ณ ๋๋น์ ์ปฌ๋ ์ ๊ฐ์ ๊ด๊ณ(์กฐ์ธ) ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ๋ ๋ํ์ ์ผ๋ก 2๊ฐ์ง ๋ฐฉ์ ์ข ๋ฅ๊ฐ ์๋ค. Document - Embedded Embedded ์ ์ฅ ๋ฐฉ๋ฒ์ 2๊ฐ์ง ์ข ๋ฅ์ Document๊ฐ ์์ ๋, 1๊ฐ์ Document ๋ฐ์ดํฐ๋ฅผ Document key์ value์ ํต์ง๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๊ธฐ 2๊ฐ์ง ์ข ๋ฅ์ Person Document ์ Address Document๊ฐ ์๋ค๊ณ ํ์. // Person { _id: "joe", name: "Joe Bookreader" } // Address { pataron_id: "joe", street: "123 Fake Street", city: "Faketon", state: "MA", zip: "12345" } ์์ D..
[MONGO] ๐ ์ฌ์ฉ์ ๊ณ์ ๊ด๋ฆฌ ํ๊ธฐ (์ถ๊ฐ/์ญ์ )
๋ชฝ๊ณ ๋๋น ๊ณ์ ๊ด๋ฆฌ ๋ค์์ ๋ชฝ๊ณ ๋๋น์์ ๊ณ์ ๊ด๋ฆฌํ ๋ ์ฌ์ฉ๋๋ ๋ช ๋ น์ด์ด๋ค. ๋ช ๋ น์ด ์ค๋ช db.auth() ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ์ ์ธ์ฆ db.createUser() Creates a new user. db.updateUser() Updates user data. db.changeUserPassword() ์ฌ์ฉ์ ํจ์ค์๋ ๋ณ๊ฒฝ db.dropAllUsers() ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ญ์ ํ๋ค. db.dropUser() ํ ์ฌ์ฉ์๋ฅผ ์ญ์ ํ๋ค db.grantRolesToUser() ๋กค๊ณผ ๊ถํ์ ์ฌ์ฉ์์ ํ์ฉํ๋ค db.revokeRolesFromUser() ์ฌ์ฉ์์ ๋ถ์ฌํ ๋กค์ ์ญ์ ํ๋ค db.getUser() ์ง์ ํ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ฐํํ๋ค db.getUsers() ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ๋ชจ๋ ์ฌ์ฉ์์ ์ ..
[MONGO] ๐ ๋ชฝ๊ณ ๋๋น ์๋ ์คํ ๐ ์ค์ ํ๊ธฐ
๋ชฝ๊ณ ๋๋น ์๋ ์คํ ์ค์ ๋ชฝ๊ณ ๋๋น๋ฅผ ์คํํ ๋๋ง๋ค mongod.exe๋ฅผ ์คํํด ๋ชฝ๊ณ ๋๋น ๋ฐ๋ชฌ์๋ฒ๋ฅผ ๋์์ผ ํ๋๋ฐ, mysql์ฒ๋ผ ์๋์ผ๋ก ์๋ฒ๊ฐ ๋์๊ฐ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด ์์ ๊น ๊ณ ๋ฏผํ๋ค ์ฑ๊ณตํด์ ํฌ์คํ ํด๋ณธ๋ค. ํ์ฌ ๋ณธ์ธ PC์ ๋ชฝ๊ณ ๋๋น ์ค์น ๊ฒฝ๋ก๋ ์ด๋ ๊ฒ ๋์ด์๋ค. ๋ชฝ๊ณ ๋๋น ๊ฒฝ๋ก -dbpath ๊ฒฝ๋ก [dbpah ์ค์ ํ๋ ๋ฒ ] 1. mongod.cfg ์ค์ ํ์ผ์ ์ด๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ค๋ค. dbpath์ path ๊ฒฝ๋ก๋ ๋ณธ์ธ์ด ์ค์นํ ๊ฒฝ๋ก๋ก ํํ ๋ฐ๊ฟ์ฃผ์ logํด๋์ ํ์ผ์ด ์์ผ๋ฉด ์ง์ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค. # mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-..
[MONGO] ๐ ๋ฐฐ์ด ์์ ์ฐ์ฐ์
๋ฐฐ์ด ์์ ์ฐ์ฐ์ $ list: [1, 2, 3] ์ด๋ผ๋ ํ๋๊ฐ ์๋ค๊ณ ์นฉ์๋ค. // list: [1, 2, 3] // list: 2 ๋ฅผ ๊ธฐ์ตํด์ list.2์ ์์๊ฐ์ 5๋ก ๋ฐ๊พผ๋ค. db.zero.update({ list: 2 }, { 'list.$': 5 }) // list: [1, 5, 3] ์์ ์ฟผ๋ฆฌ๋ฅผ ํตํด ๋ ๋ฒ์งธ ์์๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์ฆ ์ฐพ์ ๊ฐ์ ์์น๋ฅผ ๊ธฐ์ตํ๋ ์ฐ์ฐ์์ ๋๋ค. $addToSet ๋ฐฐ์ดํ๋์ ํด๋น ์์๊ฐ ์์ผ๋ฉด ์ถ๊ฐํ๊ณ , ์์ผ๋ฉด ์๋ฌด๊ฒ๋ ํ์ง ์์ต๋๋ค. ๋ชฝ๊ณ DB์์ ์์ฒด์ ์ผ๋ก ๋ฐฐ์ด์ ํด๋น ์์๊ฐ ์๋์ง ๊ฒ์ฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ํธํฉ๋๋ค. { $addToSet: { ํ๋1: ๊ฐ, ํ๋2: ๊ฐ, ... } } $pop ๋ฐฐ์ด ๋ฉ์๋์ฒ๋ผ ๋ชฝ๊ณ DB ๋ฐฐ์ด์์ ๋งจ ์ ๋๋ ๋งจ ๋ค ์์๋ฅผ ๊บผ๋ด๋..
[MONGO] ๐ ํ๋ ์์ ์ฐ์ฐ์
ํ๋ ์์ ์ฐ์ฐ์ ๋คํ๋จผํธ์ ํ๋๋ฅผ ์์ ํ๋ ์ฐ์ฐ์๋ค์ ๋๋ค. ์ ์ผ ๋ง์ด ์ฐ์ด๋ ์ฐ์ฐ์์ด๊ธฐ ๋๋ฌธ์ ๊ผญ ์์๋ ํ์๊ฐ ์์ต๋๋ค. $inc ํ๋ ๊ฐ์ ์ฆ๊ฐ์ํค๊ฑฐ๋ ๊ฐ์์ํค๋ ์ฐ์ฐ์์ ๋๋ค. ์์๋ฉด ์ฆ๊ฐ, ์์๋ฉด ๊ฐ์์ ๋๋ค. { $inc: { ํ๋: 1 } } // ํ๋์ ๊ฐ์ 1 ์ฆ๊ฐ $mul ํ๋ ๊ฐ์ ๊ณฑํ๋ ์ฐ์ฐ์์ ๋๋ค. 1๋ณด๋ค ํฐ ์๋ฅผ ๊ณฑํ๋ฉด ์ปค์ง๊ณ , 1๋ณด๋ค ์์ ์๋ฅผ ๊ณฑํ๋ฉด ์์์ง๋๋ค. ์ฟผ๋ฆฌ์ ์์์ ์กฐ์ฌํ์ธ์. $inc๋ ํ๋ ์์ ์์ฑ์ด์๋ค๋ฉด, ์ด๋ฒ์๋ ํ๋๊ฐ $mul ์์ ์์ฑ์ ๋๋ค. { $mul: { ํ๋: 2 } } // ํ๋์ ๊ฐ์ ๋๋ฐฐ ์ฆ๊ฐ $rename ํ๋ ์ด๋ฆ์ ๋ฐ๊พธ๋ ์ฐ์ฐ์์ ๋๋ค. ์ฌ๋ฌ ํ๋๋ฅผ ๋์์ ๊ต์ฒดํ ์ ์์ต๋๋ค. { $rename: { ํ๋1: ์ด๋ฆ, ํ๋2: ์ด๋ฆ, ... ..
[MONGO] ๐ ๋ชฝ๊ณ ๋๋น ์ธ๋ฑ์ค(Index) ์ ๋ฆฌ
๋ชฝ๊ณ ๋๋น ์ธ๋ฑ์ค DB์์ ์ธ๋ฑ์ค๋ ์ ๋ง ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์์ฃผ ์กฐํ๋๋ ํ๋๋ฅผ ๋ฐ๋ก ์ ์ฅํด์ ์กฐํ ๋ฐ ์ ๋ ฌ ์์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๊ธฐ๋ฒ์ ๋๋ค. /* book ์ปฌ๋ ์ ์ someField ํ๋์ ๋ํด ์ธ๋ฑ์ค๋ฅผ ๋ธ๋กํน ๋ฐฉ์์ผ๋ก ์์ฑํ๋ค. ๋ช ๋ น ์คํ ํ ์ธ๋ฑ์ค ์์ฑ์ด ์๋ฃ๋ ๋๊น์ง ํด๋น ์ปฌ๋ ์ ์ ๋ํ ๋ชจ๋ CRUD๋ ๋ธ๋กํน ๋๋ค. */ db.book.createIndex({name:1}) // nameํ๋์ ์ธ๋ฑ์ค ์ค์ // single field index : ๋จ์ผ key ์ธ๋ฑ์ค, 1์ ์ค๋ฆ์ฐจ์, -1์ ๋ด๋ฆผ์ฐจ์ /* book ํ๋์ ๋ํด ์ธ๋ฑ์ค๋ฅผ ๋ ผ๋ธ๋กํน ๋ฐฉ์์ผ๋ก ์์ฑํ๋ค. ๋ช ๋ น ์คํ ํ ์ธ๋ฑ์ค ์์ฑ์ด ์งํ ์ค์ด๋๋ผ๋ ํด๋น ์ปฌ๋ ์ ์ ๋ํ ๋ชจ๋ CRUD๊ฐ ๊ฐ๋ฅํ๋ค. */ db.someCollection..
[MONGO] ๐ Embedded / ๋ฐฐ์ด / ๊ฐ์ฒด ๊ฒ์ ์ฟผ๋ฆฌ
Embedded Documents ๊ฒ์ embedded Document๋ auther Field์ฒ๋ผ Document ์ ๋ฐฐ์ด ํํ๋ก ์๋ Document ๋ฅผ ๋งํ๋ค. $elemMatch $elemMatch๋ ์กฐ๊ฑด์ด ๋ฐฐ์ด ์์ ์์์ ์ผ์นํ๋ ํ๋๋ฅผ ์ ํํฉ๋๋ค. db.book.find({ "auther":{ $elemMatch: {"name":"park"} // auther๋ฐฐ์ด๊ฐ์ฒด ๋ค ์ค์์ {"name":"park"} ๊ฒ์. } }) ์ผ๋ฐ ๋ฐฐ์ด ๊ฒ์ db.book.find({"language":"eng"}) // Embedded Document๊ฐ ์๋๊ณ ์ผ๋ฐ ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ ๋ฐ๋ก ์ ๊ทผํ๋ฉด ๋๋ค. $all $all ์ฟผ๋ฆฌ ์์ ์๋ ๋ชจ๋ ๊ฐ์ ํฌํจํ๋ ๋ฐฐ์ด์ ๊ฐ์ผ๋ก ๊ฐ์ง ํ๊ทธ๋ฅผ ์ ํํฉ๋๋ค. ์๋์ ๋ฐฐ์ด์ด ์์์..
[MONGO] ๐ limit / skip ์ฟผ๋ฆฌ
limit db.book.find().limit(2) // 2๊ฐ๋ง ์ถ๋ ฅํ๋ค. skip mysql์ offset์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค db.book.find().skip(2) // ๋ฆฌ์คํธ์์ 2๊ฐ๋ฅผ skipํ Document๋ฅผ ์ถ๋ ฅ // ์๋ ์ด 3๊ฐ ์กฐํ๋๋ค๋ฉด, 2๊ฐ๋ฅผ ์คํพ์ ์ ๋ง์ง๋ง 1๊ฐ๋ง ์ถ๋ ฅ
[MONGO] ๐ ๋ชฝ๊ณ ๋๋น CRUD ์ฟผ๋ฆฌ ๋ฌธ๋ฒ ๋ช ๋ น์ด ๐ฏ ์ ๋ฆฌ
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ๋ น์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ show dbs -- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฆฌ์คํธ๊ฐ ์ถ๋ ฅ db -- ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ๋ ฅ db.stats() -- ํ์ฌ ์ฌ์ฉ ํ๊ณ ์๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ๋ณด ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ use database -- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ ํน์ ์์ฑ(์กด์ฌ ํ์ง ์์ ๊ฒฝ์ฐ ์์ฑ) -- use ๋ฅผ ํตํด ์์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ทธ ์์ ์ต์ ํ๊ฐ์ Document ๊ฐ ์กด์ฌํด์ผ show dbs ๋ฅผ ํตํด ํ์ธํ ์ ์๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์ db.dropDatabase() -- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ -- ์ด ๋ช ๋ น์ด๋ use DATABASE_NAME ๋ฅผ ํตํด ์ง์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ํ๋์ด ์์ด์ผ ํฉ๋๋ค. ์ปฌ๋ ์ ๋ช ๋ น์ด ์ปฌ๋ ์ ์์ฑ // db.createCollection( name [, op..
[MONGO] ๐ ๋ชฝ๊ณ ๋๋น ํ๋ฐฉ ์ค์น & ์ค์ ๋ฒ ์ ๋ฆฌ ๐
MongoDB ์ค์นํ๊ธฐ MongoDB๋ ์๋ ๊ฐ ๋ํ์ ์ธ NoSQL ์ ํ์ผ๋ก ์๋ฆฌ ์ก์๋ค. ํนํ, ์ ํต์ ์ธ RDBMS ๋๋น ์ฐ์ํ ์ค๋ ๋ฐ ์ค์ผ์ผ ์์ ๋ฅ๋ ฅ์ผ๋ก ๋๋ ํธ๋ํฝ, ๋๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ํ๋ ๋ชจ๋ ์น ์๋์ ๊ฑธ๋ง๋ ์ ์ฅ์๋ก ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ๋ชฝ๊ณ ๋๋น๋ฅผ ์ค์นํ๊ณ ์คํ ๋ฐ ์ ๋ก์ฌํญ์ ํด๊ฒฐํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๊ฒ ๋ค. MongoDB Community Download Download the Community version of MongoDB's non-relational database server from MongoDB's download center. www.mongodb.com community ๋ฒ์ ๋ค์ด๋ก๋ํ์ฌ ์ค์น ์งํ, ์ค์น ์ complete ํด๋ฆญ ํ Install MongD ..
[MONGO] ๐ ๋ชฝ๊ณ ๋๋น ํน์ง & ๋น๊ต & ๊ตฌ์กฐ (NoSQL)
MongoDB ๋? MongoDB๋ ๋ฌธ์ ์งํฅ ๋ฐ์ดํฐ ๋ชจ๋ธ(Document DB)์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ค. ์ด๋ฌํ ์ ํ์ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด ์ ํ ๋ฐ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํตํฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. RDBMS๋ MySQL์ด ๋ง์ด ์ฐ์ด๋ฏ์ด, NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ค ๋ํ๊ฒฉ์ด๋ผ๊ณ ๋งํ ์ ๋๋ก ๊ฐ์ฅ ๋ง์ด ์ฐ์ธ๋ค. [NoSQL DB vs ๊ด๊ณํ DB ๋น๊ต] ํญ๋ชฉ NoSQL RDBMS ์ ํฉ์ ๋ฌด - ์คํ๋ผ์ธ์์ ์ ํ ๋ฐ ๋น์ ํ ๋ฐ์ดํฐ ๋ถ์ ์ ๋ฌด - ์ด๋น ๋์ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ์ ๋ฌด - ๋ก๊ทธ ๋ฐ ์ด๋ ฅ ๋ฑ์ ๋จ์ ๊ธฐ๋กํ ์ ๋ฌด - ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ฐ ์ผ๊ด์ฑ์ด ์ค์ํ ํธ๋์ญ์ ์ ๋ฌด - ์จ๋ผ์ธ์์ ๋ค์ํ ์ง๊ณ ๋ฐ ํต๊ณ๋ฅผ ๋ถ์ํ๋ ์ ๋ฌด - ๋ณต์กํ ๊ณ์ฐ ๋ฐ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ด ํ์ํ ์ ๋ฌด ๋ฐ์ดํฐ ๋ชจ๋ธ - ์๋น..