ํธ๋์ญ์ ๋ฐ ์์
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฑฐ๋์ ๊ฒฝ์ฐ:
ํธ๋์ญ์ ์์ ์ปฌ๋ ์ ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ํธ๋์ญ์ ์์ ์ปฌ๋ ์ ๋ฐ ์ธ๋ฑ์ค ์์ฑํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์
ํธ๋์ญ์ ์ ์ฌ์ฉ๋๋ ์ปฌ๋ ์ ์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ์ ์์ต๋๋ค.
์ฐธ๊ณ
์ค๋ ๊ฐ ์ฐ๊ธฐ ํธ๋์ญ์ ์์๋ ์ ์ปฌ๋ ์ ์ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋์ ์ค๋์์ ๊ธฐ์กด ์ปฌ๋ ์ ์ ์ฐ๊ณ ๋ค๋ฅธ ์ค๋์์ ์์์ ์ผ๋ก ์ ์ปฌ๋ ์ ์ ์์ฑํ๋ ๊ฒฝ์ฐ, MongoDB๋ ๋์ผํ ํธ๋์ญ์ ์์ ๋ ์์ ์ ๋ชจ๋ ์ํํ ์ ์์ต๋๋ค.
์ ํ๋ ์ปฌ๋ ์ ์๋ ์ธ (write) ์ ์์ต๋๋ค.
๊ณ ์ ์ฌ์ด์ฆ
์ปฌ๋ ์ ์์ ์ฝ์ ๋๋ ์ฝ๊ธฐ ๊ณ ๋ ค
"snapshot"
์ ์ฌ์ฉํ ์ ์์ต๋๋ค. (MongoDB 5.0๋ถํฐ ๋์ ๋จ)config
,admin
๋๋local
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์ ์ ์ฝ๊ณ ์ธ ์ ์์ต๋๋ค.system.*
์ปฌ๋ ์ ์ ์ธ ์ ์์ต๋๋ค.explain
๋๋ ์ด์ ์ ์ฌํ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ง์๋๋ ์์ ์ ์ฟผ๋ฆฌ ๊ณํ์ ๋ฐํํ ์ ์์ต๋๋ค.
ํธ๋์ญ์ ์ธ๋ถ์์ ์์ฑ๋ ์ปค์์ ๊ฒฝ์ฐ ํธ๋์ญ์ ๋ด๋ถ์์
getMore
์(๋ฅผ) ํธ์ถํ ์ ์์ต๋๋ค.ํธ๋์ญ์ ์์ ์์ฑ๋ ์ปค์์ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ธ๋ถ์์
getMore
๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
๋ช ๋ น์ ํธ๋์ญ์ ์
killCursors
์ฒซ ๋ฒ์งธ ์์ ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.๋ํ ํธ๋์ญ์ ๋ด์์
killCursors
๋ช ๋ น์ ์คํ ํ๋ฉด ์๋ฒ ๊ฐ ์ง์ ๋ ์ปค์๋ฅผ ์ฆ์ ์ค์งํฉ๋๋ค. ํธ๋์ญ์ ์ด ์ปค๋ฐ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค.
๋ค์ค ๋ฌธ์ ํธ๋์ญ์ ์์ ์ง์๋๋ ์์
CRUD ์์
ํธ๋์ญ์ ์์ ํ์ฉ๋๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฉ์๋ | ๋ช
๋ น | ์ฐธ๊ณ |
---|---|---|
๋ค์ ๋จ๊ณ๋ ์ ์ธ๋ฉ๋๋ค. | ||
๋น์ค๋ํ ์ปฌ๋ ์ ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. For sharded collections, use the aggregation pipeline with the
$group stage. See Distinct Operation. | ||
์กด์ฌํ์ง ์๋ ์ปฌ๋ ์
์์ ์์ธํ ๋ด์ฉ์ ๊ด๋ฆฌ ์์ ์ ์ฐธ์กฐํ์ธ์. | ||
์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์์ ์คํํ๋ฉด ์ปฌ๋ ์ ์ด ์์์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ด๋ฆฌ ์์ ์ ์ฐธ์กฐํ์ธ์. | ||
์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์์ ์คํํ๋ฉด ์ปฌ๋ ์ ์ด ์์์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ด๋ฆฌ ์์ ์ ์ฐธ์กฐํ์ธ์. | ||
์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์์ ์คํํ๋ฉด ์ปฌ๋ ์ ์ด ์์์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ด๋ฆฌ ์์ ์ ์ฐธ์กฐํ์ธ์. |
์ฐธ๊ณ
์ค๋ ํค ๊ฐ ์ ๋ฐ์ดํธ
ํธ๋์ญ์
์์ ๋๋ ์ฌ์๋ ๊ฐ๋ฅ ์ฐ๊ธฐ๋ก ๋จ์ผ ๋ฌธ์ ์
๋ฐ์ดํธ/์ฐพ๊ธฐ ๋ฐ ์์ (update/findAndModify) ์์
์ ์คํํด ๋ฌธ์์ ์ค๋ ํค ๊ฐ์ ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค(์ค๋ ํค ํ๋๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ
_id
ํ๋์ธ ๊ฒฝ์ฐ ์ ์ธ). ์์ธํ ๋ด์ฉ์ ๋ฌธ์์ ์ค๋ ํค ๊ฐ ๋ณ๊ฒฝ์์ ํ์ธํ์ธ์.
์นด์ดํธ ์ฐ์ฐ
ํธ๋์ญ์
๋ด์์ ์นด์ดํธ ์ฐ์ฐ์ ์ํํ๋ ค๋ฉด $count
์ง๊ณ ๋จ๊ณ ๋๋ $group
($sum
ํํ์ ํฌํจ) ์ง๊ณ ๋จ๊ณ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
MongoDB ๋๋ผ์ด๋ฒ๋ $sum
ํํ์๊ณผ ํจ๊ป
$group
๋ฅผ ์ฌ์ฉํ์ฌ ์นด์ดํธ๋ฅผ ์ํํ๋ ํฌํผ ๋ฉ์๋๋ก์ ์ปฌ๋ ์
์์ค API countDocuments(filter, options)
์ ์ ๊ณตํฉ๋๋ค.
mongosh
๋ $sum
ํํ์๊ณผ ํจ๊ป $group
์ ์ฌ์ฉํ์ฌ ์นด์ดํธ๋ฅผ ์ํํ๋ ํฌํผ ๋ฉ์๋ db.collection.countDocuments()
๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฐจ๋ณํ๋ ์ด์
ํธ๋์ญ์ ๋ด์์ ๊ณ ์ ํ ์์ ์ ์ํํฉ๋๋ค.
์ค๋๋์ง ์์ ์ปฌ๋ ์ ์ ๊ฒฝ์ฐ,
db.collection.distinct()
๋ฉ์๋/distinct
๋ช ๋ น๊ณผ$group
๋จ๊ณ์ ์ง๊ณ ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.๋ฆฌ์ค๋๋ ์ปฌ๋ ์ ์ ๊ฒฝ์ฐ
db.collection.distinct()
๋ฉ์๋ ๋๋distinct
๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.์ค๋ฉ๋ ์ปฌ๋ ์ ์ ๊ณ ์ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด ๋์
$group
๋จ๊ณ์ ์ง๊ณ ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํฉ๋๋ค. ์์:{00}} ๋์ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
db.coll.aggregate([ { $group: { _id: null, distinctValues: { $addToSet: "$x" } } }, { $project: { _id: 0 } } ]) {00}} ๋์ ๋ค์์ ์ฌ์ฉํฉ๋๋ค.
db.coll.aggregate([ { $match: { status: "A" } }, { $group: { _id: null, distinctValues: { $addToSet: "$x" } } }, { $project: { _id: 0 } } ])
ํ์ดํ๋ผ์ธ์ ๋ฌธ์์ ์ปค์๋ฅผ ๋ฐํํฉ๋๋ค.
{ "distinctValues" : [ 2, 3, 1 ] } ์ปค์๋ฅผ ๋ฐ๋ณตํ์ฌ ๊ฒฐ๊ณผ ๋ฌธ์์ ์ก์ธ์คํฉ๋๋ค.
๊ด๋ฆฌ ์ด์
ํธ๋์ญ์ ์ด ๊ต์ฐจ ์ค๋ ์ฐ๊ธฐ ํธ๋์ญ์ (write transaction)์ด ์๋ ๊ฒฝ์ฐ ๋ถ์ฐ ํธ๋์ญ์ ๋ด์์ ์ปฌ๋ ์ ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋ช ์์ ์์ฑ ์์
๋ช
๋ น | ๋ฉ์๋ | ์ฐธ๊ณ ์ฌํญ |
---|---|---|
์์ฑํ ์ธ๋ฑ์ค๋ ์ปฌ๋ ์ ์ด ์์ ์ ์ผ๋ถ๋ก ์์ฑ๋ ๊ฒฝ์ฐ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ์์ด์ผ ํ๋ฉฐ, ๋๋ ๋์ผํ ํธ๋์ญ์ ์์ ์ด์ ์ ์์ฑ๋ ๋น ์ ๊ท ์ปฌ๋ ์ ์ ์์ด์ผ ํฉ๋๋ค. |
์ฐธ๊ณ
ํธ๋์ญ์
๋ด์์ ์ปฌ๋ ์
์ด๋ ์ธ๋ฑ์ค๋ฅผ ๋ช
์์ ์ผ๋ก ๋ง๋ค๋ ค๋ฉด ํธ๋์ญ์
์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ด "local"
์ฌ์ผ ํฉ๋๋ค.
ํธ๋์ญ์ ์์ ์ปฌ๋ ์ ๋ฐ ์ธ๋ฑ์ค ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํธ๋์ญ์ ์์ ์ปฌ๋ ์ ๋ฐ ์ธ๋ฑ์ค ์์ฑ์ ์ฐธ์กฐํ์ธ์.
์์์ ์์ฑ ์์
์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ์ฐ๊ธฐ ์์ ์ ํตํด ์ปฌ๋ ์ ์ ์์์ ์ผ๋ก ๋ง๋ค ์๋ ์์ต๋๋ค.
์กด์ฌํ์ง ์๋ ์ปฌ๋ ์
์ ๋ํด ๋ฉ์๋ ์คํ | ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์
์ ๋ํด ๋ช
๋ น ์คํ |
---|---|
db.collection.findAndModify() with upsert: true db.collection.findOneAndReplace() with upsert: true db.collection.findOneAndUpdate() with upsert: true |
|
db.collection.updateOne() with upsert: true db.collection.updateMany() with upsert: true db.collection.replaceOne() with upsert: true |
|
db.collection.bulkWrite() with insert or upsert:true operationsVarious Bulk Operation Methods with insert or upsert:true operations |
ํธ๋์ญ์ ์์ ํ์ฉ๋๋ ๋ค๋ฅธ CRUD ์์ ์ CRUD ์์ ์์ ํ์ธํ์ธ์.
ํธ๋์ญ์ ์์ ์ปฌ๋ ์ ๋ฐ ์ธ๋ฑ์ค ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํธ๋์ญ์ ์์ ์ปฌ๋ ์ ๋ฐ ์ธ๋ฑ์ค ์์ฑ์ ์ฐธ์กฐํ์ธ์.
์ ๋ณด ์ด์
2} buildInfo
,hello
connectionStatus
, ๊ณผ ๊ฐ์ ์ ๋ณด ๋ช
๋ น(๋ฐ ๊ทธ ๋์ฐ๋ฏธ ๋ฉ์๋) (๋ฐ ํด๋น ํฌํผ ๋ฉ์๋)์ ๊ฐ์ ์ ๋ณด ๋ช
๋ น์ ํธ๋์ญ์
์์ ํ์ฉ๋์ง๋ง, ํธ๋์ญ์
์ ์ฒซ ๋ฒ์งธ ์ฐ์ฐ์ด ๋ ์๋ ์์ต๋๋ค.
์ ํ๋ ์์
ํธ๋์ญ์ ์์ ํ์ฉ๋์ง ์๋ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค์ค ์ค๋ ์ฐ๊ธฐ ํธ๋์ญ์ ์์ ์๋ก์ด ์ปฌ๋ ์ ์ ์์ฑํ๊ธฐ. ์๋ฅผ ๋ค์ด ํ๋์ ์ค๋์์ ๊ธฐ์กด ์ปฌ๋ ์ ์ ์ฐ๊ณ ๋ค๋ฅธ ์ค๋์ ์์์ ์ผ๋ก ์ปฌ๋ ์ ์ ์์ฑํ๋ ๊ฒฝ์ฐ MongoDB๋ ๋์ผํ ํธ๋์ญ์ ์์ ๋ ์์ ์ ๋ชจ๋ ์ํํ ์ ์์ต๋๋ค.
์ปฌ๋ ์ ์ ๋ช ์์ ์์ฑ ์:
db.createCollection()
๋ฉ์๋ ๋ฐ ์ธ๋ฑ์ค ์:db.collection.createIndexes()
๋ฐdb.collection.createIndex()
๋ฉ์๋("local"
์ด์ธ์ ์ฝ๊ธฐ ๋ฌธ์ ์์ค์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ).
listCollections
2} ๋ฐ ๋ช ๋ น๊ณผ ํด๋น ๋์ฐ๋ฏธ ๋ฉ์๋.listIndexes
createUser
,getParameter
,count
๋ฑ๊ณผ ํด๋น ํฌํผ์ ๊ฐ์ ๊ธฐํ ๋น CRUD ๋ฐ ๋น ์ ๋ณด ์์ ์ ๋๋ค.๋ณ๋ ฌ ์์ . ์ฌ๋ฌ ๋ค์์คํ์ด์ค๋ฅผ ๋์์ updateํ๋ ค๋ฉด
bulkWrite
๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.