Docs Menu

create

create

์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ด ๋ช…๋ น์œผ๋กœ ์ƒ์„ฑ๋œ ๋ทฐ๋Š” ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜จ๋””๋งจ๋“œ ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์— ๋Œ€ํ•œ ์„ค๋ช…์€ $merge๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ๋ช…๋ น์€ ๋‹ค์Œ ํ™˜๊ฒฝ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฐฐํฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MongoDB Atlas: ํด๋ผ์šฐ๋“œ์—์„œ์˜ MongoDB ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์™„์ „ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค

์ฐธ๊ณ 

์ด ๋ช…๋ น์€ ๋ชจ๋“  MongoDB Atlas ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ช…๋ น์— ๋Œ€ํ•œ Atlas ์ง€์›์— ๊ด€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ช…๋ น์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • MongoDB Enterprise: MongoDB์˜ ๊ตฌ๋… ๊ธฐ๋ฐ˜ ์ž์ฒด ๊ด€๋ฆฌ ๋ฒ„์ „

  • MongoDB Community: MongoDB์˜ ์†Œ์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฌด๋ฃŒ ์ž์ฒด ๊ด€๋ฆฌ ๋ฒ„์ „

create๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

์ฐธ๊ณ 

MongoDB 6.3์—๋Š” bucketMaxSpanSeconds ๋ฐ bucketRoundingSeconds ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 6.3 ์ดํ•˜๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์ปฌ๋ ‰์…˜์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น granularity๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ collMod์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

{
create: <collection or view name>,
capped: <true|false>,
timeseries: {
timeField: <string>,
metaField: <string>,
granularity: <string>
},
expireAfterSeconds: <number>,
autoIndexId: <true|false>,
size: <max_size>,
max: <max_documents>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document>,
viewOn: <source>,
pipeline: <pipeline>,
collation: <document>,
writeConcern: <document>,
comment: <any>
}

create ๋ช…๋ น์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ
์œ ํ˜•
์„ค๋ช…

create

๋ฌธ์ž์—ด

์ƒˆ ์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„ ์ง€์ • ์ œํ•œ ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

capped

๋ถ€์šธ

์„ ํƒ ์‚ฌํ•ญ. ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด true๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. true๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ size ํ•„๋“œ์— ์ตœ๋Œ€ ํฌ๊ธฐ๋„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

timeseries.timeField

๋ฌธ์ž์—ด

time series ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ค ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ time-series ๋ฌธ์„œ์—์„œ ๋‚ ์งœ๋ฅผ ํฌํ•จํ•˜๋Š” ํ•„๋“œ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. time series ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์„œ์—๋Š” timeField์˜ ๊ฐ’์œผ๋กœ ์œ ํšจํ•œ BSON ๋‚ ์งœ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

timeseries.metaField

๋ฌธ์ž์—ด

์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ฐ time series ๋ฌธ์„œ์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ํ•„๋“œ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ง€์ •๋œ ํ•„๋“œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๊ณ ์œ ํ•œ ๋ฌธ์„œ ์‹œ๋ฆฌ์ฆˆ์— ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๊ฑฐ์˜ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ง€์ •ํ•œ ํ•„๋“œ์˜ ์ด๋ฆ„์ด _id์ด๊ฑฐ๋‚˜ timeseries.timeField์™€ ๊ฐ™์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„๋“œ๋Š” ๋ฐฐ์—ด์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์œ ํ˜•์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

timeseries.granularity

๋ฌธ์ž์—ด

์„ ํƒ ์‚ฌํ•ญ. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ "seconds" (๊ธฐ๋ณธ๊ฐ’), "minutes" ๋ฐ "hours" ์ž…๋‹ˆ๋‹ค. ์—ฐ์†์ ์œผ๋กœ ์ˆ˜์‹ ๋˜๋Š” ์ธก์ •๊ฐ’ ์‚ฌ์ด์˜ ์‹œ๊ฐ„ ๋ฒ”์œ„์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฐ’์œผ๋กœ ์„ธ๋ถ„์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. granularity ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด Time Series ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹์ด ์ตœ์ ํ™”๋˜์–ด ์„ฑ๋Šฅ์ด ์ •ํ™•ํ•˜๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

expireAfterSeconds

์ˆซ์ž

์„ ํƒ ์‚ฌํ•ญ. ๋ฌธ์„œ๊ฐ€ ๋งŒ๋ฃŒ๋˜๋Š” ์‹œ๊ฐ„(์ดˆ)์„ ์ง€์ •ํ•˜์—ฌ time series ์ปฌ๋ ‰์…˜ ์˜ ๋ฌธ์„œ๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MongoDB๋Š” ๋งŒ๋ฃŒ๋œ ๋ฌธ์„œ๋ฅผ ์ž๋™์œผ๋กœ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

autoIndexId

๋ถ€์šธ

์„ ํƒ ์‚ฌํ•ญ. _id ํ•„๋“œ์— ์ธ๋ฑ์Šค ์ž๋™ ์ƒ์„ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด false ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

MongoDB 4.0๋ถ€ํ„ฐ local ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด์™ธ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•  ๋•Œ autoIndexId ์˜ต์…˜์„ false ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ 3.2๋ถ€ํ„ฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

size

integer

์„ ํƒ ์‚ฌํ•ญ. ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์ด ์ตœ๋Œ€ ํฌ๊ธฐ์— ๋„๋‹ฌํ•˜๋ฉด MongoDB๋Š” ์ƒˆ ๋ฌธ์„œ๋ฅผ ์œ„ํ•œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „ ๋ฌธ์„œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์˜ ๊ฒฝ์šฐ size ํ•„๋“œ๋Š” ํ•„์ˆ˜์ด๋ฉฐ ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜์˜ ๊ฒฝ์šฐ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

max

integer

์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์— ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ๋ฌธ์„œ ์ˆ˜์ž…๋‹ˆ๋‹ค. size ์ œํ•œ์ด ์ด ์ œํ•œ๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์ด ์ตœ๋Œ€ ๋ฌธ์„œ ์ˆ˜์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— size ์ œํ•œ์— ๋„๋‹ฌํ•˜๋ฉด MongoDB๋Š” ์˜ค๋ž˜๋œ ๋ฌธ์„œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. max ์ œํ•œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ, ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์— ํ•„์š”ํ•œ size ์ œํ•œ์ด ์ตœ๋Œ€ ๋ฌธ์„œ ์ˆ˜๋ฅผ ํฌํ•จํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

storageEngine

๋ฌธ์„œ

์„ ํƒ ์‚ฌํ•ญ. WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•  ๋•Œ ์ปฌ๋ ‰์…˜๋ณ„๋กœ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. storageEngine ์˜ต์…˜์˜ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{ <storage-engine-name>: <options> }

collection์„ ์ƒ์„ฑํ•  ๋•Œ ์ง€์ •ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๊ตฌ์„ฑ์€ ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ณต์ œ ์ค‘์— ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  oplog์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์˜ต์…˜ ์ง€์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

validator

๋ฌธ์„œ

์„ ํƒ ์‚ฌํ•ญ. ์‚ฌ์šฉ์ž๊ฐ€ collection์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ทœ์น™์ด๋‚˜ ํ‘œํ˜„์‹ ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์Šคํ‚ค๋งˆ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฒ„์ „ 3.2์— ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

validator ์˜ต์…˜์€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ทœ์น™ ๋˜๋Š” ํ‘œํ˜„์‹์„ ์ง€์ •ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. $near, $nearSphere, $text, $where์„(๋ฅผ) ์ œ์™ธํ•˜๊ณ  ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž์™€ ๋™์ผํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ฝ์ž… ์ค‘์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฌธ์„œ๋Š” ์ˆ˜์ •๋  ๋•Œ๊นŒ์ง€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • admin, local ๋ฐ config ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปฌ๋ ‰์…˜์—๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • system.* ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

validationLevel

๋ฌธ์ž์—ด

์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ์ค‘์— MongoDB๊ฐ€ ๊ธฐ์กด ๋ฌธ์„œ์— ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ทœ์น™์„ ์–ผ๋งˆ๋‚˜ ์—„๊ฒฉํ•˜๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 3.2์— ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

"off"
์‚ฝ์ž… ๋˜๋Š” ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
"strict"
๊ธฐ๋ณธ๊ฐ’ ๋ชจ๋“  ์‚ฝ์ž… ๋ฐ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ์— ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
"moderate"
๊ธฐ์กด์˜ ์œ ํšจํ•œ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์‚ฝ์ž… ๋ฐ ์—…๋ฐ์ดํŠธ์— ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ์—๋Š” ๊ทœ์น™์„ ์ ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.

validationAction

๋ฌธ์ž์—ด

์„ ํƒ ์‚ฌํ•ญ. ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฌธ์„œ๋ฅผ error๋กœ ์ฒ˜๋ฆฌํ• ์ง€, ์•„๋‹ˆ๋ฉด ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฌธ์„œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋˜ ์œ„๋ฐ˜ ์‚ฌํ•ญ์— ๋Œ€ํ•ด warn์œผ๋กœ ์ฒ˜๋ฆฌํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” validationLevel์— ์˜ํ•ด ๊ฒฐ์ •๋œ ๋ฌธ์„œ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

"error"
๊ธฐ๋ณธ๊ฐ’ ๋ฌธ์„œ๋Š” ์“ฐ๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฉด ์“ฐ๊ธฐ ์ž‘์—…์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
"warn"
๋ฌธ์„œ๊ฐ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๊ฐ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๋ฉด ์“ฐ๊ธฐ ์ž‘์—…์€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์‹คํŒจ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

indexOptionDefaults

๋ฌธ์„œ

์„ ํƒ ์‚ฌํ•ญ. ์‚ฌ์šฉ์ž๊ฐ€ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•  ๋•Œ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

indexOptionDefaults ์˜ต์…˜์€ storageEngine ๋ฌธ์„œ๋ฅผ ํ—ˆ์šฉํ•˜๋ฉฐ, ๊ทธ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{ <storage-engine-name>: <options> }

์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ง€์ •ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๊ตฌ์„ฑ์€ ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ณต์ œ ์ค‘์— ์œ ํšจ์„ฑ์ด ๊ฒ€์‚ฌ๋˜๊ณ  oplog์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 3.2์— ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

viewOn

๋ฌธ์ž์—ด

๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ์†Œ์Šค ์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ์˜ ์ „์ฒด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๋งŒ๋“ค๋ ค๋Š” ๋ทฐ์™€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ปฌ๋ ‰์…˜๊ณผ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ทฐ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

db.createView()๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฒ„์ „ 3.4์— ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

pipeline

๋ฐฐ์—ด

์ง‘๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. create๋Š” ์ง€์ •๋œ pipeline์„ viewOn ์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ์— ์ ์šฉํ•˜์—ฌ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ทฐ ์ •์˜ pipeline ์—๋Š” $out ๋˜๋Š” $merge ๋‹จ๊ณ„๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ทฐ ์ •์˜์— ์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ(์˜ˆ: ๋ทฐ ์ •์˜์— $lookup ๋˜๋Š” $facet ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ) ์ด ์ œํ•œ์€ ์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ทฐ ์ •์˜๋Š” ๊ณต๊ฐœ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ทฐ์— ๋Œ€ํ•œ db.getCollectionInfos() ๋ฐ explain ์ž‘์—…์—๋Š” ๋ทฐ๋ฅผ ์ •์˜ํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ทฐ ์ •์˜์— ๋ฏผ๊ฐํ•œ ํ•„๋“œ์™€ ๊ฐ’์„ ์ง์ ‘ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

db.createView()๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

collation

์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€์†Œ๋ฌธ์ž ๋ฐ ์•…์„ผํŠธ ํ‘œ์‹œ ๊ทœ์น™๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด ๋น„๊ต์— ๋Œ€ํ•œ ์–ธ์–ด๋ณ„ ๊ทœ์น™์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ •๋ ฌ ์˜ต์…˜์˜ ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•  ๋•Œ locale ํ•„๋“œ๋Š” ํ•„์ˆ˜์ด๊ณ , ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ํ•„๋“œ๋Š” ๋ชจ๋‘ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ํ•„๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ปฌ๋ ‰์…˜ ์ˆ˜์ค€์—์„œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ:

  • ์ธ๋ฑ์Šค ์ƒ์„ฑ ์ž‘์—…์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ ํ•ด๋‹น ์ปฌ๋ ‰์…˜์˜ ์ธ๋ฑ์Šค๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์ •๋ ฌ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ํ•ด๋‹น ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์ž‘์—…์€ ๋ช…์‹œ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ปฌ๋ ‰์…˜์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ํ•œ ์—ฐ์‚ฐ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•„๋“œ๋ณ„๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ •๋ ฌ๊ณผ ํ•จ๊ป˜ ์ฐพ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์ฐพ๊ธฐ ์™€ ์ •๋ ฌ์—์„œ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ปฌ๋ ‰์…˜ ๋˜๋Š” ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, MongoDB๋Š” ์ด์ „ ๋ฒ„์ „์—์„œ ๋ฌธ์ž์—ด ๋น„๊ต์— ์‚ฌ์šฉ๋œ ๊ฐ„๋‹จํ•œ ์ด์ง„ ๋น„๊ต๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ทฐ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์ด ์ง€์ •๋˜์ง€ ์•Š์•˜์œผ๋ฉด ๋ทฐ์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์€ "simple" ์ด์ง„ ๋น„๊ต ๋ฐ์ดํ„ฐ ์ •๋ ฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋ทฐ์˜ ๊ฒฝ์šฐ, ๋ทฐ๋Š” ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ์„ค์ •์„ ์ƒ์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ทฐ์— ๋Œ€ํ•œ ๋ทฐ์˜ ๊ฒฝ์šฐ ๋งŒ๋“ค๋ ค๋Š” ๋ทฐ์— ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ์„ค์ •์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ปฌ๋ ‰์…˜ ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ๊ฐ’ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•˜๋Š” ์˜ˆ์‹œ ๋Š” ๋ฐ์ดํ„ฐ ์ •๋ ฌ ์ง€์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฒ„์ „ 3.4์— ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

writeConcern

๋ฌธ์„œ

์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐmongos๋Š”create๋ช…๋ น๊ณผ ํ•ด๋‹น ํ—ฌํผdb.createCollection()์˜ ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern) "majority"๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

comment

any

์„ ํƒ ์‚ฌํ•ญ. ์ด ๋ช…๋ น์— ์ฒจ๋ถ€ํ•  ์‚ฌ์šฉ์ž ์ œ๊ณต ์ฝ”๋ฉ˜ํŠธ์ž…๋‹ˆ๋‹ค. ์„ค์ •๋˜๋ฉด ์ด ์„ค๋ช…์€ ๋‹ค์Œ ์œ„์น˜์—์„œ ์ด ๋ช…๋ น์˜ ๋ ˆ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€์€ ์œ ํšจํ•œ ๋ชจ๋“  BSON types (๋ฌธ์ž์—ด, ์ •์ˆ˜, ๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ)์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ 4.4์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

db.createCollection() ๋ฉ”์„œ๋“œ์™€ db.createView() ๋ฉ”์„œ๋“œ๋Š” create ๋ช…๋ น์„ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 4.2์—์„œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

create์€ ์ž‘์—… ๊ธฐ๊ฐ„์— ์ง€์ •๋œ ์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ์— ๋Œ€ํ•œ ๋ฐฐํƒ€์  ์ž ๊ธˆ์„ ์–ป์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์— ์ด๋ฃจ์–ด์ง„ ๋ชจ๋“  ํ›„์† ์ž‘์—…์€ ๋ฐ˜๋“œ์‹œ create์ด ์ž ๊ธˆ์„ ํ•ด์ œํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. create์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ž ๊ธˆ์„ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋ทฐ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ system.views ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ฐฐํƒ€ ๋ฝ์„ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž ๊ธˆ์€ ๋ช…๋ น์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ทฐ ์ƒ์„ฑ ๋˜๋Š” ์ˆ˜์ •์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

MongoDB 4.2 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” create๊ฐ€ ์ƒ์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋ฐฐํƒ€์  ์ž ๊ธˆ์„ ํš๋“ํ•˜์—ฌ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๋ชจ๋“  ํ•ด๋‹น ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ 4.4์—์„œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์ด ๊ต์ฐจ ์ƒค๋“œ ์“ฐ๊ธฐ ํŠธ๋žœ์žญ์…˜(write transaction)์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์ปฌ๋ ‰์…˜๊ณผ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์—์„œ create๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ๊ธฐ ๊ณ ๋ ค "local"๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "local" ์ด์™ธ์˜ ์ฝ๊ธฐ ๊ณ ๋ ค ์ˆ˜์ค€์„ ์ง€์ •ํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 5.0์—์„œ ๋ณ€๊ฒฝ๋จ

stable API V1๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ create ๋ช…๋ น์— ๋‹ค์Œ ํ•„๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • autoIndexId

  • capped

  • indexOptionDefaults

  • max

  • size

  • storageEngine

๋ฐฐํฌ์„œ๋ฒ„์—์„œ ์ธ์ฆ/๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์‹œํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ create์— ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…
ํ•„์ˆ˜ ๊ถŒํ•œ

๋น„๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜ ์ƒ์„ฑํ•˜๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ createCollection๋˜๋Š”

์ƒ์„ฑํ•  ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ insert

์ปฌ๋ ‰์…˜์˜ convertToCapped

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ createCollection

๋ทฐ ๋งŒ๋“ค๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ createCollection.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ createCollection์ด(๊ฐ€) ์žˆ๊ณ  ๋งŒ๋“ค ๋ทฐ์— ๋Œ€ํ•œ find ์ด(๊ฐ€) ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ถŒํ•œ ๋„ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ทฐ์—์„œ find.

  • pipeline์—์„œ ์ฐธ์กฐ๋œ ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ทฐ์˜ find(์žˆ๋Š” ๊ฒฝ์šฐ)

์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด readWrite ๊ธฐ๋ณธ ์ œ๊ณต ์—ญํ• ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋‚˜์—ด๋œ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์—ญํ• ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ƒ์„ฑ์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ญํ•  ํ—ˆ์šฉ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

64ํ‚ฌ๋กœ๋ฐ”์ดํŠธ๋กœ ์ œํ•œ๋œ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ํ˜•์‹์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”.

db.runCommand( { create: "collection", capped: true, size: 64 * 1024 } )

์ง€๋‚œ 24์‹œ๊ฐ„ ๋™์•ˆ์˜ ๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ์บก์ฒ˜ํ•˜๋Š” time series ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "data",
granularity: "hours"
},
expireAfterSeconds: 86400
}
)

์ฐธ๊ณ 

์ด ์˜ˆ์‹œ์—์„œ๋Š” expireAfterSeconds๋ฅผ 86400 ์œผ๋กœ ์ง€์ •ํ–ˆ๋Š”๋ฐ, ์ด๋Š” ๋ฌธ์„œ๊ฐ€ timestamp ๊ฐ’ ์ดํ›„ 86400์ดˆ ํ›„์— ๋งŒ๋ฃŒ๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. Time Series Collections (TTL) ์ž๋™ ์ œ๊ฑฐ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ 

์ด ๋ช…๋ น์œผ๋กœ ์ƒ์„ฑ๋œ ๋ทฐ๋Š” ๊ตฌ์ฒดํ™”๋œ ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜จ๋””๋งจ๋“œ ๊ตฌ์ฒดํ™”๋œ ๋ทฐ์— ๋Œ€ํ•œ ์„ค๋ช…์€ $merge๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฒ„์ „ 4.2์—์„œ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ทฐ ์ •์˜ pipeline ์—๋Š” $out ๋˜๋Š” $merge ๋‹จ๊ณ„๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ทฐ ์ •์˜์— ์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ(์˜ˆ: ๋ทฐ ์ •์˜์— $lookup ๋˜๋Š” $facet ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ) ์ด ์ œํ•œ์€ ์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ทฐ create ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline> } )

๋˜๋Š” ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ:

db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ survey ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

db.survey.insertMany(
[
{ _id: 1, empNumber: "abc123", feedback: { management: 3, environment: 3 }, department: "A" },
{ _id: 2, empNumber: "xyz987", feedback: { management: 2, environment: 3 }, department: "B" },
{ _id: 3, empNumber: "ijk555", feedback: { management: 3, environment: 4 }, department: "A" }
]
)

๋‹ค์Œ ์ž‘์—…์€ _id, feedback.management ๋ฐ department ํ•„๋“œ๊ฐ€ ์žˆ๋Š” managementRatings ๋ทฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค:

db.runCommand ( {
create: "managementFeedback",
viewOn: "survey",
pipeline: [ { $project: { "management": "$feedback.management", department: 1 } } ]
} )

์ค‘์š”

๋ทฐ ์ •์˜๋Š” ๊ณต๊ฐœ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ทฐ์— ๋Œ€ํ•œ db.getCollectionInfos() ๋ฐ explain ์ž‘์—…์—๋Š” ๋ทฐ๋ฅผ ์ •์˜ํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ทฐ ์ •์˜์— ๋ฏผ๊ฐํ•œ ํ•„๋“œ์™€ ๊ฐ’์„ ์ง์ ‘ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํŒ

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฐ์ดํ„ฐ ์ •๋ ฌ์€ collection ๋˜๋Š” ๋ณด๊ธฐ ์ˆ˜์ค€์—์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์—ฐ์‚ฐ์€ collection์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•˜์—ฌ collection์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค(๋ฐ์ดํ„ฐ ์ •๋ ฌ ํ•„๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฌธ์„œ ์ฐธ์กฐ).

db.runCommand ( {
create: "myColl",
collation: { locale: "fr" }
});

์ด ๋ฐ์ดํ„ฐ ์ •๋ ฌ์€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์›ํ•˜๋Š” ์ธ๋ฑ์Šค ๋ฐ ์ž‘์—…์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด myColl์— ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

{ _id: 1, category: "cafรฉ" }
{ _id: 2, category: "cafe" }
{ _id: 3, category: "cafE" }

๋‹ค์Œ ์ž‘์—…์€ ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

db.myColl.find().sort( { category: 1 } )

์ด ์ž‘์—…์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ ๋ฌธ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

{ "_id" : 2, "category" : "cafe" }
{ "_id" : 3, "category" : "cafE" }
{ "_id" : 1, "category" : "cafรฉ" }

๋‹จ์ˆœ ์ด์ง„ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” collection์— ๋Œ€ํ•œ ๋™์ผํ•œ ์ž‘์—…(์ฆ‰, ํŠน์ • ๋ฐ์ดํ„ฐ ์ •๋ ฌ ์„ธํŠธ ์—†์Œ)์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ ๋ฌธ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

{ "_id" : 3, "category" : "cafE" }
{ "_id" : 2, "category" : "cafe" }
{ "_id" : 1, "category" : "cafรฉ" }

db.createCollection()์„(๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•  ๋•Œ ์ปฌ๋ ‰์…˜๋ณ„ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๊ตฌ์„ฑ ์˜ต์…˜์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ž‘์—…์„ ๊ณ ๋ คํ•˜์„ธ์š”:

db.runCommand( {
create: "users",
storageEngine: { wiredTiger: { configString: "<option>=<setting>" } }
} )

์ด ์ž‘์—…์€ MongoDB๊ฐ€ wiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์— ์ „๋‹ฌํ•  ํŠน์ • ๊ตฌ์„ฑ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ users ๋ผ๋Š” ์ƒˆ ์ปฌ๋ ‰์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • wiredTiger ์˜ต์…˜์— ๋Œ€ํ•ด์„œ๋Š” ์ปฌ๋ ‰์…˜ ์ˆ˜์ค€ ์˜ต์…˜์— ๋Œ€ํ•œ WiredTiger ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.