์์ ์กฐ์์ฉ ๋ชจ๋ธ ๋ฐ์ดํฐ
์ด ํ์ด์ง์ ๋ด์ฉ
MongoDB ๋ ๋ณต์ ๋ณธ ์ธํธ ๋ฐ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๋ํด ๋ค์ค ๋ฌธ์ ํธ๋์ญ์ ์ ์ง์ํ์ง๋ง, ๋๋ถ๋ถ์ ์๋๋ฆฌ์ค์์ ์ด ํ์ด์ง์์ ์ค๋ช ํ ๋น์ ๊ทํ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ ๊ณ์ํด์ ๋ฐ์ดํฐ ๋ฐ ์ฌ์ฉ ์ฌ๋ก์ ์ต์ ์ผ ๊ฒ์ ๋๋ค.
ํจํด
MongoDB์์ ๋จ์ผ ๋ฌธ์์ ๋ํ ์ฐ๊ธฐ๋ ์์์ฑ ์ฐ์ฐ์ ๋๋ค. ํจ๊ป ์ ๋ฐ์ดํธํด์ผ ํ๋ ํ๋์ ๊ฒฝ์ฐ ๋์ผํ ๋ฌธ์ ๋ด์ ํ๋๋ฅผ ํฌํจํ๋ฉด ํ๋๋ฅผ ์์์ฑ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ํ์ฌ ๊ฒฐ์ ์ ๋ณด๋ฟ๋ง ์๋๋ผ ๊ฒฐ์ ๊ฐ๋ฅํ ๋ถ์๋ฅผ ํฌํจํ์ฌ ์ฑ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์งํด์ผ ํ๋ ์ํฉ์ ์๊ฐํด ๋ณด์ธ์.
๊ฒฐ์ ๊ฐ๋ฅํ ๋ถ์์ ๊ฒฐ์ ์ ๋ณด๊ฐ ๋๊ธฐํ๋์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋์ผํ ๋ฌธ์ ๋ด์ available
ํ๋์ checkout
ํ๋๋ฅผ ์ฝ์
ํ๋ฉด ๋ ํ๋๋ฅผ ์์์ ์ผ๋ก ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
{ _id: 123456789, title: "MongoDB: The Definitive Guide", author: [ "Kristina Chodorow", "Mike Dirolf" ], published_date: ISODate("2010-09-24"), pages: 216, language: "English", publisher_id: "oreilly", available: 3, checkout: [ { by: "joe", date: ISODate("2012-10-15") } ] }
๊ทธ๋ฐ ๋ค์ ์ ๊ฒฐ์ ์ ๋ณด๋ก ์
๋ฐ์ดํธํ๋ ค๋ฉด db.collection.updateOne()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ available
ํ๋์ checkout
ํ๋๋ฅผ ๋ชจ๋ ๋ค์๊ณผ ๊ฐ์ด ์์์ ์ผ๋ก ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
db.books.updateOne ( { _id: 123456789, available: { $gt: 0 } }, { $inc: { available: -1 }, $push: { checkout: { by: "abc", date: new Date() } } } )
์ด ์์ ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ์ํ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
matchedCount
ํ๋๋ 1
๋ฌธ์๊ฐ ์
๋ฐ์ดํธ ์กฐ๊ฑด๊ณผ ์ผ์นํ์์ ๋ณด์ฌ์ฃผ๊ณ , modifiedCount
๋ ์ฐ์ฐ์ด 1
๋ฌธ์๋ฅผ ์
๋ฐ์ดํธํ์์ ๋ณด์ฌ์ค๋๋ค.
์
๋ฐ์ดํธ ์กฐ๊ฑด๊ณผ ์ผ์นํ๋ ๋ฌธ์๊ฐ ์์ผ๋ฉด matchedCount
๋ฐ modifiedCount
0
๊ฐ ๋๋ฉฐ ์ฑ
์ ๊ฒฐ์ ํ ์ ์์์ ๋ํ๋
๋๋ค.