[TIL : 39] NoSQL : MongoDB_CRUD

jabaeยท2022๋…„ 4์›” 25์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
39/44

โœ”๏ธ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ...

์•„ํ‹€๋ผ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ์ ‘์†ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์ŠคํŠธ ํ™•์ธํ•˜๊ธฐ

show dbs

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉํ•˜๊ธฐ

use ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค_์ด๋ฆ„

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปฌ๋ ‰์…˜ ๋ฆฌ์ŠคํŠธ ํ™•์ธํ•˜๊ธฐ

show collections

์ด์ œ CRUD๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

๐Ÿ“Œ CREATE

  • insert() : ์ƒˆ๋กœ์šด ๋„ํ๋จผํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

โšก๏ธ ๋ชจ๋“  ๋„ํ๋จผํŠธ๊ฐ€ "_id" ํ•„๋“œ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ฐ˜๋“œ์‹œ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ฐ’์ด ๋˜‘๊ฐ™์•„๋„ "_id"๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ๋„ํ๋จผํŠธ๋กœ ์ทจ๊ธ‰๋˜๋ฉฐ, ๊ฐ’์ด ๋‹ค๋ฅด๋”๋ผ๋„ "_id"๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ ๋„ํ๋จผํŠธ๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋„ํ๋จผํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ "_id" ํ•„๋“œ์™€ ๊ฐ’์„ ํŠน์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ObjectId ํƒ€์ž…์˜ ๊ฐ’์œผ๋กœ ์ž๋™์ ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค.

1. ๋„ํ๋จผํŠธ 1๊ฐœ ์‚ฝ์ž…ํ•˜๊ธฐ

๊ด„ํ˜ธ ์•ˆ์— ์‚ฝ์ž…ํ•˜๊ณ ์ž ํ•˜๋Š” ๋„ํ๋จผํŠธ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. ์‘๋‹ต์œผ๋กœ "nInsert" : 1๋ฅผ ํ†ตํ•ด ๋„ํ๋จผํŠธ 1๊ฐœ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.insert({
	"_id" : 1,                 // ์—†์œผ๋ฉด ์ž๋™ ObjectId๋กœ ํ• ๋‹น๋จ
    "name" : "jabae",
    "number" : 1
})

2. ๋„ํ๋จผํŠธ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฝ์ž…ํ•˜๊ธฐ

๋ฐฐ์—ด ์•ˆ์— ๋‹ด์•„์ฃผ์–ด ๋„ํ๋จผํŠธ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฝ์ž…๋  ๋•Œ์—๋Š” ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋Œ€๋กœ ์‚ฝ์ž…๋œ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.insert([{"name" : "jihyu", "number" : 2}, {"name" : "hyupa", "number" : 3}])

3. ๊ฐ™์€ "_id"์œผ๋กœ ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ

๋งŒ์•ฝ ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” "_id"๊ณผ ๋™์ผํ•œ ๊ฐ’์˜ ๋„ํ๋จผํŠธ๋ฅผ ํ•œ ๊ฐœ ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ, duplicate key ์—๋Ÿฌ๋ฉ”์„ธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ด๋ฏธ ๊ฐ™์€ "_id" ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋„ํ๋จผํŠธ๊ฐ€ ์ปฌ๋ ‰์…˜ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋Š” ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.insert({"_id" : 1, "name" : "harry", "number" : 4}) // ์ด๋ฏธ ์ปฌ๋ ‰์…˜ ์•ˆ์— ๊ฐ™์€ "_id" ๊ฐ’์˜ ๋„ํ๋จผํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด,

writeResult({                  // ์‘๋‹ต,
	"nInsert" : 0,             // ๋„ํ๋จผํŠธ ์ถ”๊ฐ€ ์‹คํŒจ
    "writeError" : {
    	"code" : 11000,
        "errmsg" : "E11000 duplicate key error collection: ..." //  duplicate key ์—๋Ÿฌ
        }
})

๋‹ค๋ฅธ ์˜ˆ์‹œ๋กœ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ค‘, ๋™์ผํ•œ "_id"๊ฐ’์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด? ๋ฐฐ์—ด ์•ˆ์˜ ๋ฆฌ์ŠคํŠธ ์ˆœ์„œ๋Œ€๋กœ ์‚ฝ์ž…๋˜๋ฉฐ, ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ์ธ๋ฑ์Šค๋ถ€ํ„ฐ๋Š” ์‚ฝ์ž…๋˜์ง€ ์•Š๋Š”๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.insert([{"_id" : 1, "content" : "test1"}, {"_id" : 1, "content" : "test2"}, {"_id" : 2, "content" : "test3"}])

BulkWriteResult({                   // ์‘๋‹ต,
	"writeErrors" : [
    	{
        	"index" : 1,            // ์—๋Ÿฌ๊ฐ€ ๋‚œ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์•Œ๋ ค์คŒ
            "code" : 11000,
            "errmsg" : E11000 duplicate key error collection: ..."
            "op" : {                // ์ค‘๋ณต๋œ "_id" ๊ฐ’์„ ๋„ฃ์€ ๋„ํ๋จผํŠธ๋ฅผ ์•Œ๋ ค์คŒ
    			"_id" : 1, 
    			"content" : "test2"
    			}
        }
    ],
	...
	"nInsert" : 1,                  // ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ๋„ํ๋จผํŠธ๋งŒ ์ถ”๊ฐ€๋จ
    ...
})

์—๋Ÿฌ ์ดํ›„๋ถ€ํ„ฐ๋Š” ์‚ฝ์ž…์ด ๋˜์ง€ ์•Š๋Š”๋ฐ, ์ด๋Š” ์ž‘์—… ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ค‘๋ณต๋œ ๊ฐ’ ์ด์™ธ์˜ ๋„ํ๋จผํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ’ฅ {"ordered" : false}๋ฅผ ๋„ฃ์–ด์ฃผ์–ด ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๊ณ ์œ  _id๋ฅผ ๊ฐ€์ง„ ๋„ํ๋จผํŠธ๋ฅผ ์ปฌ๋ ‰์…˜์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.insert([{"_id" : 1, "content" : "test1"}, {"_id" : 1, "content" : "test2"}, {"_id" : 2, "content" : "test3"}], {"ordered" : false})

4. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜์— insert๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ

๊ธฐ์กด์— ์—†๋Š” ์ปฌ๋ ‰์…˜์— .insert()๋กœ ๋„ํ๋จผํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ, ์ปฌ๋ ‰์…˜์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๋™์‹œ์— ๋„ํ๋จผํŠธ๊ฐ€ ์‚ฝ์ž…๋œ๋‹ค. ์ด๋Š” MongoDB๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

db.์—†๋Š”_์ปฌ๋ ‰์…˜_์ด๋ฆ„.insert({"contents" : "test1"})

writeResult({"nInsert" : 1})   // ์‘๋‹ต, ๋„ํ๋จผํŠธ 1๊ฐœ๊ฐ€ ์ถ”๊ฐ€๋จ

show collections               // ์ปฌ๋ ‰์…˜ ์กฐํšŒ ๋ช…๋ น์–ด
์—†๋Š”_์ปฌ๋ ‰์…˜_์ด๋ฆ„                   // ์ปฌ๋ ‰์…˜์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!

๐Ÿ“Œ READ

  • find() : ๊ด„ํ˜ธ ์•ˆ ์กฐ๊ฑด(์ฟผ๋ฆฌ๋ฌธ)์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค. ์ฟผ๋ฆฌ๋ฌธ์ด ์—†๋‹ค๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค.
  • findOne() : ๊ด„ํ˜ธ ์•ˆ์— ์กฐ๊ฑด(์ฟผ๋ฆฌ๋ฌธ)์ด ์žˆ๋‹ค๋ฉด ๊ทธ ์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋Š”, ์—†๋‹ค๋ฉด ๋žœ๋ค์œผ๋กœ 1๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค. ์ฃผ๋กœ "_id"๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•ด ์œ ์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

1. ํŠน์ • ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ

๊ด„ํ˜ธ ์•ˆ์— ์กฐ๊ฑด์„ ๋„ฃ์–ด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๊ฒƒ์ธ์ง€ ์กฐ๊ฑด์„ ๊ฑธ์–ด์ค€๋‹ค. ์กฐ๊ฑด์ด ๋‘ ๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด, .find({์กฐ๊ฑด_1, ์กฐ๊ฑด_2) ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.find({"score": 100})                  // score๊ฐ€ 100์ธ ๋ฐ์ดํ„ฐ ์กฐํšŒ
db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.find({"score": 100, "class": "math"}) // score๊ฐ€ 100์ด๋ฉด์„œ ํด๋ž˜์Šค๊ฐ€ math์ธ ๋ฐ์ดํ„ฐ ์กฐํšŒ

์กฐ๊ฑด์— ๋งž๋Š” ๊ฒฐ๊ณผ๋Š” ๋žœ๋คํ•˜๊ฒŒ ์„ ํƒ๋œ 20๊ฐœ๋งŒ ์ถœ๋ ฅ๋œ๋‹ค. ๋‹ค์Œ 20๊ฐœ๋ฅผ ์ถœ๋ ฅํ•˜๋ ค๋ฉด Type "it" for more๋ผ๋Š” ์•ˆ๋‚ด์— ๋งž๊ฒŒ iterate์˜ ์ค„์ž„๋ง์ธ it์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

2. ์ „์ฒด ์กฐํšŒํ•˜๊ธฐ

์กฐ๊ฑด์„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.find()

3. ์˜ต์…˜ : ๋ฐ์ดํ„ฐ ์ˆ˜ ์กฐํšŒ, ํ•„๋“œ-๊ฐ’ ์Œ์— ๋งž์ถฐ ์ถœ๋ ฅ

.find() ๋’ค์— .pretty()๋ฅผ ๋ถ™์ด๋ฉด, ๋„ํ๋จผํŠธ์˜ ๊ตฌ์กฐ์™€ ๊ฐ๊ฐ์˜ ํ•„๋“œ-๊ฐ’ ์Œ์— ๋งž์ถฐ ์ •๋ ฌํ•˜์—ฌ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ค€๋‹ค. .count()๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

๐Ÿ“Œ UPDATE

  • updateOne() : ์ฃผ์–ด์ง„ ๊ธฐ์ค€์— ๋งž๋Š” ๋‹ค์ˆ˜์˜ ๋„ํ๋จผํŠธ ์ค‘ ์ฒซ๋ฒˆ์งธ ๋„ํ๋จผํŠธ ํ•˜๋‚˜๋งŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
  • updateMany() : ๊ด„ํ˜ธ ์•ˆ์˜ ์กฐ๊ฑด(์ฟผ๋ฆฌ๋ฌธ)๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋„ํ๋จผํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

1. ํŠน์ • ์กฐ๊ฑด์˜ ํ•„๋“œ ๊ฐ’ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ : $inc

({์—…๋ฐ์ดํŠธ_๋„ํ๋จผํŠธ_์กฐ๊ฑด}, {์—ฐ์‚ฐ์ž: {ํ•„๋“œ : ์—…๋ฐ์ดํŠธ_๊ฐ’}})์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์‘๋‹ต์œผ๋กœ "matchCount" : ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ๋„ํ๋จผํŠธ ์ˆ˜, "modifiedCount" : ๋ณ€๊ฒฝ๋œ ๋„ํ๋จผํŠธ ์ˆ˜๋ฅผ ํ†ตํ•ด ์ž˜ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š” ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
์•„๋ž˜๋Š” teacher์˜ ๊ฐ’์ด sara์ธ ๋„ํ๋จผํŠธ์˜ ํ•„๋“œ๋“ค์˜ ๋ชจ๋“  score์˜ ๊ฐ’์„ 10์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.updateMany({"teacher" : "sara"}, {$inc : {"score" : 10}})

2. ํŠน์ • ์กฐ๊ฑด์˜ ํ•„๋“œ ๊ฐ’ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•˜๊ธฐ : $set

ํ•ด๋‹น๋˜๋Š” ํŠน์ • ํ•„๋“œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ํ•„๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.updateOne({"_id" : 1}, {$set : {"score" : 80}})    // score๋ฅผ 80์œผ๋กœ ๋ณ€๊ฒฝํ•จ
db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.updateOne({"_id" : 1}, {$set : {"homework" : 20}}) // homework ํ•„๋“œ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€๋จ

3. ํŠน์ • ์กฐ๊ฑด์˜ ํ•„๋“œ ๊ฐ’(๋ฐฐ์—ด)์— ์š”์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ : $push

({์—…๋ฐ์ดํŠธ_๋„ํ๋จผํŠธ_์กฐ๊ฑด}, {์—ฐ์‚ฐ์ž: {๋ฐฐ์—ดํƒ€์ž…์˜_ํ•„๋“œ : {์ถ”๊ฐ€ํ• _์„œ๋ธŒ_๋„ํ๋จผํŠธ(๋ฐฐ์—ด์š”์†Œ)}}})์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.updateMany({"teacher" : "sara"}, 
						{$push : {"all scores" : {"type" : "last exam", "score" : 90}}})

๐Ÿ“Œ DELETE

  • deleteOne() : ์ฃผ์–ด์ง„ ๊ธฐ์ค€์— ๋งž๋Š” ๋‹ค์ˆ˜์˜ ๋„ํ๋จผํŠธ ์ค‘ ์ฒซ๋ฒˆ์งธ ๋„ํ๋จผํŠธ ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ์กฐ๊ฑด์— ๋งž๋Š” ๋„ํ๋จผํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด, ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ "_id" ๊ฐ’์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.
  • deleteMany() : ์ฟผ๋ฆฌ๋ฌธ๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋„ํ๋จผํŠธ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

1. ๋„ํ๋จผํŠธ ์‚ญ์ œ

์‘๋‹ต์œผ๋กœ "deletedCount" : ์‚ญ์ œ๋œ ์ˆ˜๋ฅผ ํ†ตํ•ด ์ž˜ ์ž‘๋™ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.deleteMany({"score" : 10}) // "score"๊ฐ€ 10์— ํ•ด๋‹นํ•˜๋Š” ๋„ํ๋จผํŠธ ์ „์ฒด ์‚ญ์ œ
db.์ปฌ๋ ‰์…˜_์ด๋ฆ„.deleteOne({"_id" : 1})     // "_id"๊ฐ€ 1์ธ ๋„ํ๋จผํŠธ 1๊ฐœ ์‚ญ์ œ

2. ์ปฌ๋ ‰์…˜ ์‚ญ์ œ

์‘๋‹ต์œผ๋กœ true๋ฅผ ํ†ตํ•ด ์ž˜ ์ž‘๋™ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. (drop์€ ์•ž์„œ Importing์—์„œ ๊ธฐ์กด์˜ ์ปฌ๋ ‰์…˜๊ณผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ์ดํ„ฐ ์‚ฌ์ด์˜ duplicate key ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ ํ–ˆ์—ˆ๋‹ค.)

db.์‚ญ์ œํ• _์ปฌ๋ ‰์…˜_์ด๋ฆ„.drop()
profile
it's me!:)

0๊ฐœ์˜ ๋Œ“๊ธ€