๐ 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
- https://docs.mongodb.com/manual/crud/
- https://myjamong.tistory.com/56?category=835222
- https://webisfree.com/2020-04-30/[mongodb]-%EB%AA%BD%EA%B3%A0db-update()-%EA%B8%B0%EC%A1%B4-%EA%B0%92-%EB%B3%80%EA%B2%BD-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0
- https://www.pinterest.co.kr/
'CS > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Data MongoDB] Auto-Increment Sequence ๋ง๋ค๊ธฐ (0) | 2021.09.10 |
---|---|
[MySQL] - ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation level) (11) | 2021.09.05 |
DBCP(DataBase Conncetion Pool), ์ปค๋ฅ์ ํ ์ด๋? (0) | 2021.08.10 |
์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์์ฑํ ๋์ ํธ๋์ญ์ ์ฒ๋ฆฌ (6) | 2021.08.05 |
MongoDB, compass(MongoDB GUI Client) ์ค์นํ๊ธฐ(MacOS) (0) | 2021.07.21 |
๋๊ธ