Docs Menu

planCacheSetFilter

planCacheSetFilter

์ปฌ๋ ‰์…˜ ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐํ•˜๋‹ค ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„ํš ์บ์‹œ ์ฟผ๋ฆฌ ํ˜•ํƒœ ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐํ•˜๋‹ค ๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๋ช…๋ น์€ ์ด์ „ ์ธ๋ฑ์Šค ํ•„ํ„ฐํ•˜๋‹ค ๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

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

MongoDB 8.0 ๋ถ€ํ„ฐ๋Š” ์ธ๋ฑ์Šค ํ•„ํ„ฐ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ์ฟผ๋ฆฌ ์„ค์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋Š” MongoDB 8.0 ๋ถ€ํ„ฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์„ค์ •์—๋Š” ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋Š” ์˜๊ตฌ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ˆ์ œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด setQuerySettings ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฟผ๋ฆฌ ์˜ตํ‹ฐ๋งˆ์ด์ € ์ฟผ๋ฆฌ ๊ณ„ํš ์ค‘์— ์ฟผ๋ฆฌ ์„ค์ •์„ ์ถ”๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋Š” ์ฟผ๋ฆฌ ๋ฅผ ์‹คํ–‰ ํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ ๊ณ„ํš์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

์„ค์ •์€ ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ ์˜ ์ฟผ๋ฆฌ ํ˜•ํƒœ ์— ์ ์šฉ ๋ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋Š” ์ข…๋ฃŒ ํ›„์—๋„ ์„ค์ •์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

find, distinct ๋ฐ aggregate ๋ช…๋ น์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ ์„ค์ •์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์„ค์ •์„ ์ œ๊ฑฐ ํ•˜๋ ค๋ฉด removeQuerySettings ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์„ค์ •์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์ง‘๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ ์—์„œ $querySettings ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

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

์ค‘์š”

์ด ๋ช…๋ น์€ M0, M2 ๋ฐ M5 ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ช…๋ น์„ ์ฐธ์กฐํ•˜์„ธ์š”.

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

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

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

db.runCommand(
{
planCacheSetFilter: <collection>,
query: <query>,
sort: <sort>,
projection: <projection>,
collation: { <collation> },
indexes: [ <index1>, <index2>, ...],
comment: <any>
}
)

์ธ๋ฑ์Šค ํ•„ํ„ฐํ•˜๋‹ค ์— ๋Œ€ํ•œ ๊ณ„ํš ์บ์‹œ ์ฟผ๋ฆฌ ํ˜•ํƒœ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค.

  • query

  • sort

  • projection

  • collation

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

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

planCacheSetFilter

๋ฌธ์ž์—ด

์ธ๋ฑ์Šค ํ•„ํ„ฐ์— ๋Œ€ํ•œ collection์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

query

๋ฌธ์„œ

์ธ๋ฑ์Šค ํ•„ํ„ฐ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ ์กฐ๊ฑด์ž์ž…๋‹ˆ๋‹ค.

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

sort

๋ฌธ์„œ

์„ ํƒ ์‚ฌํ•ญ. ์ธ๋ฑ์Šค ํ•„ํ„ฐ์˜ ์ •๋ ฌ์ž…๋‹ˆ๋‹ค.

projection

๋ฌธ์„œ

์„ ํƒ ์‚ฌํ•ญ. ์ธ๋ฑ์Šค ํ•„ํ„ฐ์˜ ํ”„๋กœ์ ์…˜์ž…๋‹ˆ๋‹ค.

collation

๋ฌธ์„œ

์ž‘์—…์— ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

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

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

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

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

๋ฐ์ดํ„ฐ ์ •๋ ฌ์ด ์ง€์ •๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ปฌ๋ ‰์…˜์— ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ( db.createCollection() ์ฐธ์กฐ), ์ž‘์—…์€ ์ปฌ๋ ‰์…˜์— ์ง€์ •๋œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

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

MongoDB 6.0๋ถ€ํ„ฐ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋Š” ์ด์ „์— ๋ช…๋ น์„ planCacheSetFilter ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •ํ•œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MongoDB 8.0 ๋ถ€ํ„ฐ๋Š” ์ธ๋ฑ์Šค ํ•„ํ„ฐ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ์ฟผ๋ฆฌ ์„ค์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋Š” MongoDB 8.0 ๋ถ€ํ„ฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์„ค์ •์—๋Š” ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋Š” ์˜๊ตฌ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ˆ์ œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด setQuerySettings ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

indexes

๋ฐฐ์—ด

์ง€์ •๋œ ๊ณ„ํš ์บ์‹œ ์ฟผ๋ฆฌ ํ˜•ํƒœ ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ์˜ ๋ฐฐ์—ด ์ž…๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ฅผ ๋‹ค์Œ ๋ฐฐ์—ด ์ค‘ ํ•˜๋‚˜๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค:

  • ์ธ๋ฑ์Šค ์‚ฌ์–‘ ๋ฌธ์„œ. ์˜ˆ๋ฅผ ๋“ค์–ด [ { x : 1 }, ... ] ์ž…๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค ์ด๋ฆ„. ์˜ˆ๋ฅผ ๋“ค์–ด [ "x_1", ... ] ์ž…๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์˜ตํ‹ฐ๋งˆ์ด์ € ๋Š” ์ฟผ๋ฆฌ ๊ณ„ํš์„ ์œ„ํ•ด collection ์Šค์บ” ๋˜๋Š” ์ธ๋ฑ์Šค ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ˆจ๊ฒจ์ง„ ๊ฒฝ์šฐ ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์ปฌ๋ ‰์…˜ ์Šค์บ”์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ํ‚ค ํŒจํ„ด์„ ๊ฐ€์ง„ ์—ฌ๋Ÿฌ ์ธ๋ฑ์Šค์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ์ด๋ฆ„ ๋ฐฐ์—ด๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

comment

any

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

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

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

์‚ฌ์šฉ์ž๋Š” planCacheIndexFilter ์กฐ์น˜๋ฅผ ํฌํ•จํ•˜๋Š” ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์—์„œ๋Š” orders collection์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ํ”„๋กœ์ ์…˜ ๋ฐ ์ •๋ ฌ ์—†์ด status ํ•„๋“œ์˜ ๋™๋“ฑ์„ฑ ๋งค์น˜๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์ง€์ •๋œ ๋‘ ์ธ๋ฑ์Šค๋งŒ ํ‰๊ฐ€ํ•˜๊ณ  ์ปฌ๋ ‰์…˜ ์Šค์บ”์€ ๋‹ค์Œ์— ๋Œ€ํ•ด ์„ฑ๊ณต์ ์ธ ๊ณ„ํš:

db.runCommand(
{
planCacheSetFilter: "orders",
query: { status: "A" },
indexes: [
{ cust_id: 1, status: 1 },
{ status: 1, order_date: -1 }
]
}
)

์ฟผ๋ฆฌ ์กฐ๊ฑด์ž์—์„œ๋Š” ํ•„๋“œ ์ด๋ฆ„์„ ํฌํ•จํ•œ ์กฐ๊ฑด์ž์˜ ๊ตฌ์กฐ๋งŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์„ฑ๋œ ํ•„ํ„ฐ๋Š” ๋‹ค์Œ ์ž‘์—…์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

db.orders.find( { status: "D" } )
db.orders.find( { status: "P" } )

MongoDB ๊ฐ€ ๊ณ„ํš ์บ์‹œ ์ฟผ๋ฆฌ ํ˜•ํƒœ ์— ์ธ๋ฑ์Šค ํ•„ํ„ฐํ•˜๋‹ค ๋ฅผ ์ ์šฉ ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด db.collection.explain() ๋˜๋Š” cursor.explain() ๋ฉ”์„œ๋“œ์˜indexFilterSetํ•„๋“œ ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” orders collection์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ํ•„ํ„ฐ๋Š” ์กฐ๊ฑด์ž๊ฐ€ item ํ•„๋“œ์˜ ๋™๋“ฑ์„ฑ ๋งค์น˜์ธ ์ฟผ๋ฆฌ์— ์ ์šฉ๋˜๋ฉฐ, ์—ฌ๊ธฐ์„œ quantity ํ•„๋“œ๋งŒ ํ”„๋กœ์ ์…˜๋˜๊ณ  order_date ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

db.runCommand(
{
planCacheSetFilter: "orders",
query: { item: "ABC" },
projection: { quantity: 1, _id: 0 },
sort: { order_date: 1 },
indexes: [
{ item: 1, order_date: 1 , quantity: 1 }
]
}
)

๊ณ„ํš ์บ์‹œ ์ฟผ๋ฆฌ ํ˜•ํƒœ ์˜ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ์˜ตํ‹ฐ๋งˆ์ด์ € { item: 1, order_date: 1, quantity: 1 } ์ธ๋ฑ์Šค ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ธ๋ฑ์‹ฑ๋œ ๊ณ„ํš๋งŒ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” orders collection์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ํ•„ํ„ฐ๋Š” ์กฐ๊ฑด์ž๊ฐ€ item ํ•„๋“œ ๋ฐ ๋ฐ์ดํ„ฐ ์ •๋ ฌ en_US (์˜์–ด ๋ฏธ๊ตญ)์—์„œ ๋™๋“ฑ์„ฑ ๋งค์น˜์ธ ์ฟผ๋ฆฌ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

db.runCommand(
{
planCacheSetFilter: "orders",
query: { item: "Movie" },
collation: { locale: "en_US" },
indexes: [
{ item: 1, order_date: 1 , quantity: 1 }
]
}
)

๊ณ„ํš ์บ์‹œ ์ฟผ๋ฆฌ ํ˜•ํƒœ ์˜ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ์˜ตํ‹ฐ๋งˆ์ด์ € ์ธ๋ฑ์Šค { item: 1, order_date: 1, quantity: 1 } ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ธ๋ฑ์‹ฑ๋œ ๊ณ„ํš๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MongoDB ๋ถ€ํ„ฐ 6.0 ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋Š” ๋ช…๋ น์„ planCacheSetFilter ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „์— ์„ค์ •ํ•œ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MongoDB 8.0 ๋ถ€ํ„ฐ๋Š” ์ธ๋ฑ์Šค ํ•„ํ„ฐ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ์ฟผ๋ฆฌ ์„ค์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋Š” MongoDB 8.0 ๋ถ€ํ„ฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์„ค์ •์—๋Š” ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋Š” ์˜๊ตฌ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ํ•„ํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ˆ์ œ๋ฅผ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด setQuerySettings ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒ

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