๋ชฝ๊ณ DB
์ ์ฐํ ๋ฐ์ดํฐ ๋ชจ๋ธ
- MongoDB๋ document(๋ฌธ์) ๊ธฐ๋ฐ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ํค์ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ์ํ์ง ์์ ๊ณ ์ ๋ ์คํค๋ง๊ฐ ์๋ค.
- ํ์์ ๋ฐ๋ผ ํ๋๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด ์์ ๋กญ๋ค.
ํ์ฅ์ฑ๊ณผ ๋ถ์ฐ
- ์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ๋ถ์ฐ ํ์ฅ์ ํ์์ฑ์ด ์ปค์ง๋ค.
- MongoDB๋ ํด๋ฌ์คํฐ ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ(์ค๋ฉ) ์ ์ฅํ๊ณ , ์ฌ์ฉ์ ์์ฒญ์ ์ ์ ํ ์๋ฒ๋ก ๋ผ์ฐํ ํ์ฌ ๋ฐ์ดํฐ ์๊ณผ ๋ถํ๋ฅผ ํจ์จ์ ์ผ๋ก ์กฐ์ ํ๋ค.
ํด๋ฌ์คํฐ์ ์ค๋ฉ
- ํด๋ฌ์คํฐ: ์ฌ๋ฌ ์๋ฒ(๋ ธ๋)๊ฐ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฒ๋ผ ๋์ํ๋ ๊ตฌ์กฐ
- ์ค๋ฉ: ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๋๋์ด ์ ์ฅํ๋ ๋ถ์ฐ ์ ์ฅ ๋ฐฉ์์ผ๋ก, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํ์ฅ์ฑ์ ์ ๋ฆฌํ๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ์ธ๋ฑ์ฑ: ๋ค์ํ ์ธ๋ฑ์ค ์ ํ์ ์ง์ํ์ฌ ๋น ๋ฅธ ๋ฐ์ดํฐ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค.
- ์ง๊ณ: ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ฐ๋ ๊ธฐ๋ฐ์ ๊ฐ๋ ฅํ ์ง๊ณ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ๋ค.
- ๋ค์ํ ์ปฌ๋ ์ ์ ํ ๋ฐ ํ์ผ ์คํ ๋ฆฌ์ง: ๋์ฉ๋ ํ์ผ๊ณผ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค.
์ ํ ์ฌํญ
- RDBMS์์ ์ ๊ณตํ๋ ์กฐ์ธ(Join)๊ณผ ๊ฐ์ ์ผ๋ถ ๊ธฐ๋ฅ์ MongoDB์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋๋ค.
๊ณ ์ฑ๋ฅ ์ค๊ณ
- WiredTiger ์คํ ๋ฆฌ์ง ์์ง์ ๊ธฐํ์ (opportunistic) locking์ ์ฌ์ฉํ์ฌ ๋์์ฑ๊ณผ ์ฒ๋ฆฌ๋์ ๊ทน๋ํํ๋ค.
- ์ ํ๋ ์ฉ๋์ RAM์ ์บ์์ฒ๋ผ ํ์ฉํ๊ณ , ์ฟผ๋ฆฌ์ ์ ํฉํ ์ธ๋ฑ์ค๋ฅผ ์๋์ผ๋ก ์ ํํ๋ค.
- ๋ชจ๋ ์ธก๋ฉด์์ ๊ณ ์ฑ๋ฅ์ ์ ์งํ๋๋ก ์ค๊ณ๋์์ผ๋, ์ ํต์ ์ธ RDBMS์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋์ฒดํ์ง๋ ์๋๋ค.
MongoDB๋ ์ ์ฐํ ์คํค๋ง, ๋ฐ์ด๋ ํ์ฅ์ฑ, ๊ณ ์ฑ๋ฅ์ ์ ๊ณตํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋น ๋ฅธ ๊ฐ๋ฐ์ ์ ํฉํ๋ค. ๊ทธ๋ฌ๋ RDBMS์ ๋ชจ๋ ๊ธฐ๋ฅ(ํนํ ์กฐ์ธ ๋ฑ)์ ์์ ํ ๋์ฒดํ์ง๋ ์๋๋ค.
๋ชฝ๊ณ DB์ ๊ตฌ์กฐ
1. ๋ฐ์ดํฐ ๊ณ์ธต ๊ตฌ์กฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database)
MongoDB ์ธ์คํด์ค๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํธ์คํ ํ ์ ์๋ค. ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ ํ ๋ ๋ฆฝ์ ์ด๋ฉฐ, ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ํ ์๋ฒ์์ ๋ถ๋ฆฌํด ์ ์ฅํ ์ ์๋ค. ์์ฝ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ์ผ๋ก๋ admin, local, config ๊ฐ ์กด์ฌ
- ์ปฌ๋ ์
(Collection)
์ปฌ๋ ์ ์ RDBMS์ ํ ์ด๋ธ์ ํด๋นํ๋ฉฐ, ์ฌ๋ฌ ๋ํ๋จผํธ์ ์งํฉ์ด๋ค. ์ปฌ๋ ์ ์ ๋์ ์คํค๋ง๋ฅผ ๊ฐ์ง๋ฏ๋ก, ๊ฐ์ ์ปฌ๋ ์ ๋ด ๋ํ๋จผํธ๋ค์ด ์๋ก ๋ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์๋ค. ์ปฌ๋ ์ ๋ง๋ค ์ธ๋ฑ์ค๋ฅผ ๋ณ๋๋ก ์ ์ํ ์ ์์ด, ์ฟผ๋ฆฌ ์ฑ๋ฅ๊ณผ ๋ฐ์ดํฐ ์ง์ญ์ฑ ์ธก๋ฉด์์ ์ปฌ๋ ์ ๋ถ๋ฆฌ๊ฐ ํ์ํ๋ค.
- ์๋ธ ์ปฌ๋ ์
(Subcollection)
์ปฌ๋ ์ ์ด๋ฆ์ '.'์ ์ฌ์ฉํด ๋ค์์คํ์ด์ค์ฒ๋ผ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋ค. ์๋ฅผ ๋ค์ด products.info, products.distributors์ฒ๋ผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌ ๊ฐ๋ฅํ์ง๋ง, ํน๋ณํ ๊ธฐ๋ฅ์ ์ฐจ์ด๋ ์๊ณ ๋จ์ํ ์ด๋ฆ์ ํตํ ๋ถ๋ฅ ๋ฐฉ์์ด๋ค.
- ๋ํ๋จผํธ(Document)
MongoDB์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋จ์๋ก, RDBMS์ ํ๊ณผ ์ ์ฌํ๋ค. ๋ํ๋จผํธ๋ ์ ๋ ฌ๋ ํค์ ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํ์ด์ฌ์ ๋์ ๋๋ฆฌ์ ๋น์ทํ๋ค. ๊ฐ ๋ํ๋จผํธ์ ํค๋ ๋ฌธ์์ด์ด๋ฉฐ ์ค๋ณต๋ ์ ์๋ค. ๋ํ๋จผํธ๋ BSON(Binary JSON) ํฌ๋งท์ผ๋ก ์ ์ฅ๋์ด ๋ค์ํ ๋ฐ์ดํฐ ํ์ ์ ์ง์ํ๋ค.- ์ปฌ๋ ์
๋ถ๋ฆฌ์ ํ์์ฑ
- ๊ฐ์ ์ปฌ๋ ์ ๋ด์ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅธ ๋ํ๋จผํธ๋ฅผ ์ ์ฅํ ์ ์์ง๋ง, ์ปฌ๋ ์ ์ ๋ถ๋ฆฌํ๋ ์ด์ ๋ ์ฟผ๋ฆฌ ์๋์ ๋ฐ์ดํฐ ์ง์ญ์ฑ ๋๋ฌธ์ด๋ค. ์ธ๋ฑ์ค๋ ์ปฌ๋ ์ ๋จ์๋ก ์ ์๋๋ฏ๋ก, ๋ฐ์ดํฐ ํน์ฑ์ ๋ง๊ฒ ์ปฌ๋ ์ ์ ๋ถ๋ฆฌํ๋ฉด ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ค.
- ์ปฌ๋ ์
๋ถ๋ฆฌ์ ํ์์ฑ
2. ๋ฐ์ดํฐ ํ์ ๋ฐ ๊ตฌ์กฐ
- ๋ฐฐ์ด๊ณผ ๋ด์ฅ ๋ํ๋จผํธ
๋ํ๋จผํธ ๋ด์๋ ๋ฐฐ์ด ๋ฐ ์ค์ฒฉ ๋ํ๋จผํธ๋ฅผ ์์ ๋กญ๊ฒ ํฌํจํ ์ ์๋ค. ์ด๋ก ์ธํด ์ ์ฒด์ ์ธ(๊ณ์ธต์ ) ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๋ฐฐ์ด ํ๋์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค. - _id์ ObjectId:
๋ชจ๋ ๋ํ๋จผํธ๋ _id ํ๋๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง๋ฉฐ, ์ด ๊ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ObjectId ํ์ ์ด๋ค. ObjectId๋ ๋ถ์ฐ ํ๊ฒฝ์์ ๊ณ ์ ์ฑ์ ๋ณด์ฅํ๋๋ก ์ค๊ณ๋ ์๋ณ์๋ค.(๋ถ์ฐ์ด๊ธฐ์ ์ฌ๋ฌ ์๋ฒ์ ๊ฑฐ์ณ ์๋์ผ๋ก ๊ธฐ๋ณธํค๋ฅผ ์ฆ๊ฐ, ๋๊ธฐํ๋ ๋ณต์กํ๊ณ ์ค๋๊ฑธ๋ฆฐ๋ค.)๋ํ๋จผํธ ์ ๋ ฅ ์ _id๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด ์๋์ผ๋ก ์์ฑ๋๋ค.
3. CRUD ๋ฐ ์ ธ
- MongoDB ์
ธ
MongoDB๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ ์ ธ์ ์ ๊ณตํ๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ฉฐ, CRUD(์์ฑ, ์ฝ๊ธฐ, ๊ฐฑ์ , ์ญ์ ) ์์ ์ ์ํํ ์ ์๋ค. - ์์ฑ: insertOne
- ์ฝ๊ธฐ: find, findOne
- ๊ฐฑ์ : updateOne
- ์ญ์ : deleteOne, deleteMany
4. ๋ฐ์ดํฐํ
- ๋ฐฐ์ด๊ณผ ๋ด์ฅ ๋ํ๋จผํธ
๋ํ๋จผํธ ๋ด์๋ ๋ฐฐ์ด ๋ฐ ์ค์ฒฉ ๋ํ๋จผํธ๋ฅผ ์์ ๋กญ๊ฒ ํฌํจํ ์ ์๋ค. ์ด๋ก ์ธํด ์ ์ฒด์ ์ธ(๊ณ์ธต์ ) ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๋ฐฐ์ด ํ๋์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค.- ๋ฐฐ์ด: ๋ํ๋จผํธ ๋ด๋ถ์ ๋ฐฐ์ด ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๊ฐ๋ฅ, ๋ฐฐ์ด์ ๋ํด ์ง์ ์ฟผ๋ฆฌํ๊ฑฐ๋ ๋ฐฐ์ด ํ๋์ ์ธ๋ฑ์ค ์์ฑ → ์กฐํ ์ฑ๋ฅ ํฅ์ ๊ฐ๋ฅ
- ๋ด์ฅ ๋ํ๋จผํธ: ๋ํ๋จผํธ ์์ ๋ ๋ค๋ฅธ ๋ํ๋จผํธ๋ฅผ ํฌํจ ๊ฐ๋ฅ, ๊ณ์ธต์ ์ธ(์
์ฒด์ ์ธ) ๊ตฌ์กฐ๋ก ์ค๊ณํ ์ ์์ → SQL์Nested Query์ ์ ์ฌ
- ์ฅ์ : JSON ๊ธฐ๋ฐ์ ํค-๊ฐ ๊ตฌ์กฐ ์ ์ง, ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํ, ์์ฃผ ์ฌ์ฉํ๋ ํ๋์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํด ์ฑ๋ฅ ์ต์ ํ ๊ฐ๋ฅ
- ๋จ์ : ๋ฐ์ดํฐ ์ค๋ณต ๋ฐ์ ๊ฐ๋ฅ (ex. ๋์ผ ์ ๋ณด๊ฐ ์ฌ๋ฌ ๋ํ๋จผํธ์ ์ค์ฒฉ๋ ๊ฒฝ์ฐ), ์๋ชป ์ค๊ณ ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๊ด๋ฆฌ ์ด๋ ค์
{
"name": "apple",
"tags": ["fruit", "red", "fresh"]
}
{
"name": "John",
"address": {
"city": "Seoul",
"zip": "12345"
}
}
๋ํ๋จผํธ
๋ํ๋จผํธ ์ฝ์
- insertOne: ํ๋์ ๋ํ๋จผํธ๋ฅผ ์ปฌ๋ ์ ์ ์ฝ์
- insertMany: ์ฌ๋ฌ ๋ํ๋จผํธ๋ฅผ ํ ๋ฒ์ ์ฝ์ (๋ฐฐ์ด ํํ๋ก ์ ๋ฌ)
db.users.insertOne({ name: "์ ์ฑ์ฃผ", age: 28, email: "jsj@example.com" })
db.users.insertMany([
{ name: "๋ฐ์งํ", age: 24 },
{ name: "๊น๋์", age: 31 }
])
์ฝ์ ์ ์ ํจ์ฑ ๊ฒ์ฌ
- ๋ํ๋จผํธ ๊ตฌ์กฐ๋ฅผ ๊ฒ์ฌ
- _id ํ๋๊ฐ ์์ผ๋ฉด ์๋์ผ๋ก ์ถ๊ฐ
- ๋ํ๋จผํธ ํฌ๊ธฐ๊ฐ 16MB๋ฅผ ์ด๊ณผํ๋ฉด ์ฝ์ ๋ถ๊ฐ
๋ํ๋จผํธ ์ญ์
- deleteOne: ์กฐ๊ฑด์ ๋ง๋ ์ฒซ ๋ฒ์งธ ๋ํ๋จผํธ ์ญ์
- deleteMany: ์กฐ๊ฑด์ ๋ง๋ ๋ชจ๋ ๋ํ๋จผํธ ์ญ์
- drop: ์ปฌ๋ ์ ์์ฒด๋ฅผ ์ญ์
db.users.deleteOne({ name: "๋ฐ์งํ" })
db.users.deleteMany({ age: { $gte: 30 } })
db.users.drop()
deleteOne์ ๊ฒฝ์ฐ, ์กฐ๊ฑด์ ๋ง๋ ๋ํ๋จผํธ๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์ค์ ๋ก ์ด๋ค ๋ํ๋จผํธ๊ฐ ์ญ์ ๋ ์ง๋ ์ฝ์ ์์, ๊ฐฑ์ , ์ธ๋ฑ์ค ๋ฑ ๋ค์ํ ์์ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์
๋ํ๋จผํธ ๊ฐฑ์
- updateOne: ์กฐ๊ฑด์ ๋ง๋ ์ฒซ ๋ฒ์งธ ๋ํ๋จผํธ๋ง ๊ฐฑ์
- updateMany: ์กฐ๊ฑด์ ๋ง๋ ๋ชจ๋ ๋ํ๋จผํธ ๊ฐฑ์
- replaceOne: ์กฐ๊ฑด์ ๋ง๋ ์ฒซ ๋ฒ์งธ ๋ํ๋จผํธ๋ฅผ ์ ๋ํ๋จผํธ๋ก ์์ ํ ๊ต์ฒด
db.users.updateOne(
{ name: "์ ์ฑ์ฃผ" }, // ํํฐ ๋ํ๋จผํธ
{ $set: { age: 29 } } // ์์ ์ ๋ํ๋จผํธ
)
db.users.updateMany(
{ age: { $lt: 30 } },
{ $inc: { age: 1 } }
)
db.users.replaceOne(
{ name: "๊น๋์" },
{ name: "๊น๋์", age: 32, email: "nayoung@example.com" }
)
๋งค๊ฐ๋ณ์
- ์ฒซ ๋ฒ์งธ: ํํฐ ๋ํ๋จผํธ(์กฐ๊ฑด)
- ๋ ๋ฒ์งธ: ์์ ์ ๋ํ๋จผํธ(๊ฐฑ์ ๋ด์ฉ)
replaceOne ์ฃผ์์
- ์กฐ๊ฑด์ ์ฌ๋ฌ ๋ํ๋จผํธ๊ฐ ์ผ์นํด๋, ์ฒซ ๋ฒ์งธ ๋ํ๋จผํธ๋ง ๊ต์ฒด
- ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์(์ ๋ํ๋จผํธ)์ ์ค๋ณต๋ _id๊ฐ ์์ผ๋ฉด ์ค๋ฅ ๋ฐ์
- -> ๊ณ ์ ํ ๋ํ๋จผํธ๋ฅผ ๊ฐฑ์ ๋์์ผ๋ก ์ค์ ํด์ผํจ
์์์ ๊ฐฑ์ ์ฐ์ฐ์
- ๋ํ๋จผํธ์ ์ผ๋ถ ํ๋๋ง ์ ํ์ ์ผ๋ก ์์ ํ ๋ ์ฌ์ฉํ๋ ํน์ํ ์ฐ์ฐ์
- ์ด ์ฐ์ฐ์๋ค์ ํ ๋ฒ์ ์ฐ์ฐ์ผ๋ก ํ๋์ ๊ฐ ๋ณ๊ฒฝ, ์ถ๊ฐ, ์ญ์ , ๋ฐฐ์ด ์กฐ์ ๋ฑ์ ์ํํ๋ฉฐ, ํด๋น ์ฐ์ฐ์ด ์ ์ฉ๋๋ ๋ํ๋จผํธ ๋ด์์๋ ๋ค๋ฅธ ์ฐ์ฐ๊ณผ ์์ด์ง ์๊ณ ์์์ ์ผ๋ก ์ฒ๋ฆฌ ๋จ
- $set: ํ๋ ๊ฐ ์ค์ (ํ๋๊ฐ ์์ผ๋ฉด ์๋ก ์์ฑ)
- $inc: ์ซ์ ํ๋ ๊ฐ ์ฆ๊ฐ/๊ฐ์ (ํ๋๊ฐ ์์ผ๋ฉด ์๋ก ์์ฑ)
- ๋ฐฐ์ด ์ฐ์ฐ์
- $push: ๋ฐฐ์ด์ ์์ ์ถ๊ฐ
- $pop: ๋ฐฐ์ด์์ ์์ ์ ๊ฑฐ
- $ne: ๋ฐฐ์ด์ ์งํฉ์ฒ๋ผ ์ฌ์ฉ(์ค๋ณต ์๋ ๊ฐ ์ถ๊ฐ ๋ฑ)
db.users.updateOne(
{ name: "์ ์ฑ์ฃผ" },
{ $set: { city: "Seoul" } }
)
db.users.updateOne(
{ name: "์ ์ฑ์ฃผ" },
{ $inc: { age: 1 } }
)
db.users.updateOne(
{ name: "์ ์ฑ์ฃผ" },
{ $push: { hobbies: "reading" } }
)
db.users.updateOne(
{ name: "์ ์ฑ์ฃผ" },
{ $pop: { hobbies: 1 } } // 1: ๋ง์ง๋ง ์์, -1: ์ฒซ ์์ ์ ๊ฑฐ
)
db.users.updateOne(
{ name: "์ ์ฑ์ฃผ" },
{ $addToSet: { hobbies: "travel" } }
)
๊ฐฑ์ ์ ๋ ฅ
- upsert ์ต์ : ์กฐ๊ฑด์ ๋ง๋ ๋ํ๋จผํธ๊ฐ ์์ผ๋ฉด ์ ๋ํ๋จผํธ ์์ฑ
- updateOne, updateMany์ ์ธ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ { upsert: true } ์ต์ ์ถ๊ฐ
db.users.updateOne(
{ name: "์ต๋ฏผ์" },
{ $set: { age: 27 } },
{ upsert: true }
)
๊ฐฑ์ ๊ฒฐ๊ณผ ๋ฐํ
- findOneAndDelete: ์กฐ๊ฑด์ ๋ง๋ ๋ํ๋จผํธ ์ญ์ ํ ๋ฐํ
- findOneAndReplace: ์กฐ๊ฑด์ ๋ง๋ ๋ํ๋จผํธ ๊ต์ฒด ํ ๋ฐํ
- findOneAndUpdate: ์กฐ๊ฑด์ ๋ง๋ ๋ํ๋จผํธ ๊ฐฑ์ ํ ๋ฐํ
db.users.findOneAndDelete({ name: "๋ฐ์งํ" })
db.users.findOneAndReplace(
{ name: "๊น๋์" },
{ name: "๊น๋์", age: 33, email: "nayoung33@example.com" }
)
db.users.findOneAndUpdate(
{ name: "์ ์ฑ์ฃผ" },
{ $set: { age: 30 } }
)
ํ์ฉ
- updateMany: ์คํค๋ง ๋ณ๊ฒฝ, ํน์ ์ฌ์ฉ์ ์ ๋ณด ์ผ๊ด ์ถ๊ฐ ๋ฑ ๋๋ ๊ฐฑ์ ์ ํ์ฉ
- ๋ถ๋ถ ๊ฐฑ์ : $set, $inc ๋ฑ ์์์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ํ์ํ ํ๋๋ง ์์
db.users.updateMany(
{},
{ $set: { isActive: true } }
)
db.users.updateOne(
{ name: "์ ์ฑ์ฃผ" },
{ $set: { nickname: "์ฑ์ฃผ" }, $inc: { age: 1 } }
)
'๐ผ ๋ฐฑ์ค๋ > database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Redis (0) | 2025.03.02 |
---|---|
ํธ๋์ญ์ (1) | 2023.12.22 |