๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/Database

MongoDB CRUD(์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ) ์ฟผ๋ฆฌ๋ฌธ

by ์ฃผ๋ฐœ2 2021. 7. 26.
๋ฐ˜์‘ํ˜•

๐Ÿ“Ž  MongoDB CRUD(์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ) ์ฟผ๋ฆฌ๋ฌธ

์•ˆ๋…•ํ•˜์„ธ์š”, ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” MongoDB ์™€ GUI Client์ธ compass์— ๋Œ€ํ•ด ์„ค์น˜๋ฅผ ํ•ด๋ณด์•˜๋Š”๋ฐ์š”,

 

์ด๋ฒˆ์—๋Š” MongoDB์—์„œ ๊ฐ„๋‹จํ•œ CRUD ์ž‘์—…์„ ์ง„ํ–‰ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

(๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” MongoDB์—์„œ์˜ ๋ชจ๋“  CRUD ์—ฐ์‚ฐ์„ ๋‹ค๋ฃจ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์ธ ์ฟผ๋ฆฌ๋‚˜ ๋ฌธ๋ฒ• ๋“ฑ์ด ๊ถ๊ธˆํ•˜์‹œ๋ฉด ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ฐฉ๋ฌธํ•ด์ฃผ์„ธ์š” !)

 

 

 

 

 

๐ŸŽฏ MongoDB Create(Insert) ์ฟผ๋ฆฌ

-- ํ•œ๊ฐœ์˜ document ์‚ฝ์ž…
db.collection.insert({ document })

-- ๋‹ค์ˆ˜์˜ document ์‚ฝ์ž…
db.collection.insertMany([ document ])

 

 

db.collection.insert()

 

 

db.collection.insertMany()

 

 

 

๐ŸŽฏ MongoDB Read(์กฐํšŒ) ์ฟผ๋ฆฌ

-- Collection ์ „์ฒด ์กฐํšŒ
db.collection.find()

-- ๋‹คํ๋จผํŠธ๋กœ ์กฐํšŒ
db.collection.find({ document })

$gt  -- ์ดˆ๊ณผ
$gte -- ์ด์ƒ
$lt  -- ๋ฏธ๋งŒ
$lte -- ์ดํ•˜

-- ๋‹คํ๋จผํŠธ AND & OR
db.collcetion.find({ document, document })
db.collection.find({ $or: [{ }] })

 

 

db.collection.find()

 

 

db.collection.find({ document })

  • SELECT ~ WHERE name = "JuHyun"

 

 

$gt(greater than)

  • SELECT ~ WHERE age > 20

 

 

$gte(greater than or equal)

  • SELECT ~ WHERE age >= 20

 

 

$lt(less than)

  • SELECT ~ WHERE age < 25

 

 

$lte(less than equal)

  • SELECT ~ WHERE age <= 25

 

 

db.collection.find({ document and document })

  • SELECT ~ WHERE name = "JuHyun" AND age = 21

 

 

db.collection.find({ document or document })

  • SELECT ~ WHERE age = 25 OR age = 30

 

 

$eq(equal)

  • SELECT ~ WHERE age = 20

 

 

$ne(not equal)

  • SELECT ~ WHERE age != 20

 

 

 

 

๐ŸŽฏ MongoDB Update(์ˆ˜์ •) ์ฟผ๋ฆฌ

db.Collection.update({ matchQuery }, { updateQuery }, { optionQuery })
  • matchQuery: ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์กฐ๊ฑด ์ฟผ๋ฆฌ
  • updateQuery: matchQuery์— ์ผ์น˜ํ•˜๋Š” document๋ฅผ ์ฐพ์€ ํ›„ ๋ณ€๊ฒฝํ•  ์ฟผ๋ฆฌ
  • optionQuery: (์˜ต์…˜) ์ถ”๊ฐ€์ ์œผ๋กœ ๋™์ž‘ ๋ฐฉ์‹ ๋ฐ ์˜ต์…˜์„ ์‚ฌ์šฉ

์œ„ optionQuery์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

1. upsert: <Boolean>

  • matchQuery์— ํ•ด๋‹นํ•˜๋Š” ๋‹คํ๋จผํŠธ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด ๋‹คํ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์›Œ๋“œ๋กœ update์™€ insert๋ฅผ ํ•ฉ์„ฑํ•œ ๋‹จ์–ด์ž…๋‹ˆ๋‹ค.
  • true / false๋กœ ๊ธฐ๋ณธ๊ฐ’์€ false์ž…๋‹ˆ๋‹ค.

 

2. multi: <Boolean>

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ document๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
  • true / false๋กœ ๊ธฐ๋ณธ๊ฐ’์€ false์ž…๋‹ˆ๋‹ค.

 

์œ„์˜ ์˜ต์…˜ ์™ธ์— writeConcern, collation, hint ๋“ฑ๋“ฑ์˜ ์˜ต์…˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋ถ€๊ฐ€์ ์ธ ๋‚ด์šฉ์€ MongoDB ๊ณต์‹๋ฌธ์„œ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ „์ฒด ์ˆ˜์ •

  • age๊ฐ€ 20์ธ document๋ฅผ age : 10, phone : 010-0000-1111 ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • HTTP ๋ฉ”์„œ๋“œ์˜ PUT์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅ์ด ๋ฉ๋‹ˆ๋‹ค.

 


ํŠน์ • ํ•„๋“œ ์ˆ˜์ • $set

์œ„์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•˜๋‚˜์˜ ํ•„๋“œ๋งŒ ๋ณ€๊ฒฝํ•˜๊ณ , ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค์„ ์œ ์ง€ํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” $set ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

upsert(option)

์ปฌ๋ ‰์…˜์— ๋‹คํ๋จผํŠธ๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ updateํ•  ๊ฒฝ์šฐ, ์•„๋ฌด๋Ÿฐ ์ž‘์—…์ด ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ upsert : true๋ฅผ ์„ค์ •ํ•  ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๋‹คํ๋จผํŠธ๊ฐ€ ์—†์„๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋‹คํ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

๐ŸŽฏ MongoDB Delete(์‚ญ์ œ) ์ฟผ๋ฆฌ

-- ์ปฌ๋ ‰์…˜ ์ „์ฒด ์‚ญ์ œ
db.collection.remove({ })

-- ํŠน์ • ๋‹คํ๋จผํŠธ ์‚ญ์ œ
db.collection.remove({ document })

 

Mongo DB 3.2 ๋ฒ„์ „์—์„œ๋Š” deleteOne(), deleteMany() ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์—์„œ ์œ ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒ ์ง€๋งŒ ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • deleteOne(): ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๋‹คํ๋จผํŠธ๊ฐ€ ์—ฌ๋Ÿฌ๊ฑด์ด๋”๋ผ๋„ ๋‹จ ํ•œ๊ฐœ์˜ ๋‹คํ๋จผํŠธ๋งŒ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • deleteMany(): ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ชจ๋“  ๋‹คํ๋จผํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • remove(): ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๋‹จ์ผ ํ˜น์€ ๋ชจ๋“  ๋‹คํ๋จผํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

 

 

remove(ํ•œ ๊ฐœ ์‚ญ์ œ)

 

 

remove(์—ฌ๋Ÿฌ ๊ฐœ ์‚ญ์ œ)

 

 

 

deleteOne(ํ•œ ๊ฐœ ์‚ญ์ œ), deleteMany(์—ฌ๋Ÿฌ ๊ฐœ ์‚ญ์ œ)

 


์ด์ƒ์œผ๋กœ MongoDB์—์„œ ๊ฐ„๋‹จํ•œ CRUD ์ž‘์—…์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

RDB๋“  NoSQL์ด๋“  ์‹ค๋ฌด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์€ ์ •๋ง ์‹ ์ค‘ํ•˜๊ฒŒ ์ˆ˜ํ–‰์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ชฝ๊ณ DB์—์„œ๋Š” ๋กค๋ฐฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋ฐ, ๋กค๋ฐฑ๊ณผ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” Oplog๋ผ๋Š” ๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ์‚ฌ์šฉ์„ ํ•ด๋ณด์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „์— ์‚ฌ์šฉํ•œ ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ณ , ๊ธฐ๋ก์„ ๊ฑฐ๊พธ๋กœ ๋˜๋Œ๋ ค์„œ ๋กค๋ฐฑ์„ ํ•˜๋Š” ๋ฐฉ์‹์„ 

์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ฃผ์˜ํ• ์ ์€ Update๋‚˜ Delete๋ฅผ ํ•˜๊ธฐ ์ „, ๋ฐ˜๋“œ์‹œ ์กฐํšŒ๋ฅผ ํ•˜๊ณ  ๋”๋ธ”์ฒดํฌ๋ฅผ ์ง„ํ–‰ํ•œ ํ›„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค ๐Ÿ˜ƒ

 

 

 

 

References

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€