๋ฌธ์„œ ๋ฉ”๋‰ด
๋ฌธ์„œ ํ™ˆ
/
MongoDB ๋งค๋‰ด์–ผ
/ /

๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • ์‚ฌ์šฉ ์‚ฌ๋ก€
  • ์‹œ์ž‘ํ•˜๊ธฐ
  • ์„ธ๋ถ€ ์ •๋ณด
  • ์ธ๋ฑ์Šค ๋ฐ”์šด๋“œ
  • ๊ณ ์œ ํ•œ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค
  • ๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค
  • ์ •๋ ฌ
  • ์ƒค๋“œ ํ‚ค
  • ํ•ด์‹œ ์ธ๋ฑ์Šค
  • ์ง€์›๋˜๋Š” ์ฟผ๋ฆฌ
  • ๋ฐฐ์—ด ํ•„๋“œ ์ „์ฒด์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ
  • $expr
  • ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

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

๋ฉ€ํ‹ฐํ‚ค ์œ ํ˜•์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด ๊ฐ’์ด ํฌํ•จ๋œ ํ•„๋“œ์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด MongoDB๋Š” ์ž๋™์œผ๋กœ ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

MongoDB๋Š” ์Šค์นผ๋ผ ๊ฐ’(์˜ˆ: ๋ฌธ์ž์—ด ๋ฐ ์ˆซ์ž)๊ณผ ๋‚ด์žฅ๋œ ๋ฌธ์„œ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๋ฐฐ์—ด์— ๋Œ€ํ•ด ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์— ๋™์ผํ•œ ๊ฐ’์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์—๋Š” ํ•ด๋‹น ๊ฐ’์— ๋Œ€ํ•œ ํ•ญ๋ชฉ์ด ํ•˜๋‚˜๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ํ”„๋กœํ† ํƒ€์ž…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

db.<collection>.createIndex( { <arrayField>: <sortOrder> } )

์ด ์ด๋ฏธ์ง€๋Š” addr.zip ํ•„๋“œ์˜ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

``addr.zip`` ํ•„๋“œ์˜ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์ž…๋‹ˆ๋‹ค. ``addr`` ํ•„๋“œ์—๋Š” ์ฃผ์†Œ ๋ฌธ์„œ ๋ฐฐ์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์†Œ ๋ฌธ์„œ์—๋Š” ``zip`` ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

MongoDB Atlas์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฐฐํฌ์„œ๋ฒ„๋ฅผ ์œ„ํ•ด UI์—์„œ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐ์—ด ๊ฐ’์ด ํฌํ•จ๋œ ํ•„๋“œ๋ฅผ ์ž์ฃผ ์ฟผ๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋Š” ํ•ด๋‹น ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ฟผ๋ฆฌ๋˜๋Š” ํ•„๋“œ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๋ฉด ์ด (๊ฐ€) ํ•ด๋‹น ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค. ํฌํ•จ๋œ ์ฟผ๋ฆฌ๋Š” ๋ฌธ์„œ๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๊ณ ๋„ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™„์ „ํžˆ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด students ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์„œ์—๋Š” ํ•™์ƒ์ด ํ•™๊ธฐ ๋‚ด๋‚ด ๋ฐ›์€ ์‹œํ—˜ ์ ์ˆ˜์˜ ๋ฐฐ์—ด์ธ test_scores ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. test_scores๊ฐ€ 90 ์ด์ƒ์ธ ํ•™์ƒ์ด 5๊ฐœ ์ด์ƒ์ธ ์ƒ์œ„ ํ•™์ƒ ๋ชฉ๋ก์„ ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

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

๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ์„น์…˜์—์„œ๋Š” ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค์˜ ๊ธฐ์ˆ ์  ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ์ œํ•œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์Šค์บ”์˜ ๋ฐ”์šด๋“œ๋Š” ์ฟผ๋ฆฌ ์ค‘์— ๊ฒ€์ƒ‰ํ•  ์ธ๋ฑ์Šค ๋ถ€๋ถ„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค ๋ฐ”์šด๋“œ ๊ณ„์‚ฐ์€ ํŠน๋ณ„ํ•œ ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค ๋ฐ”์šด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ด ๋™์ž‘์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ์˜ˆ์ œ๋ฅผ ๋ณด๋ ค๋ฉด ๋ณ„๋„์˜ ๋ฌธ์„œ๋กœ ๊ณ ์œ ํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค์—์„œ ์ธ๋ฑ์‹ฑ๋œ ๊ฐ ๋ฌธ์„œ์—๋Š” ๊ฐ’์ด ๋ฐฐ์—ด์ธ ์ธ๋ฑ์‹ฑ๋œ ํ•„๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค ์‚ฌ์–‘์—์„œ ๋‘˜ ์ด์ƒ์˜ ํ•„๋“œ๊ฐ€ ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ ๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋œ ์ปฌ๋ ‰์…˜์„ ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    { _id: 1, scores_spring: [ 8, 6 ], scores_fall: [ 5, 9 ] }

    ์ธ๋ฑ์Šค์˜ ๋‘ ํ•„๋“œ๊ฐ€ ๋ชจ๋‘ ๋ฐฐ์—ด์ด๋ฏ€๋กœ ๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค { scores_spring: 1, scores_fall: 1 }์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์ œํ•œ ์‚ฌํ•ญ์„ ์œ„๋ฐ˜ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋œ ์ปฌ๋ ‰์…˜์„ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”:

    { _id: 1, scores_spring: [8, 6], scores_fall: 9 }
    { _id: 2, scores_spring: 6, scores_fall: [5, 7] }

    ๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค { scores_spring: 1, scores_fall: 1 }์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ๊ฐ ๋ฌธ์„œ์— ๋Œ€ํ•ด ๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋กœ ์ธ๋ฑ์‹ฑ๋˜๋Š” ํ•„๋“œ๊ฐ€ ๋ฐฐ์—ด ํ•˜๋‚˜๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ์— scores_spring ๋ฐ scores_fall ํ•„๋“œ ๋ชจ๋‘์— ๋Œ€ํ•œ ๋ฐฐ์—ด ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ ๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ ํ›„์—๋Š” scores_spring ๋ฐ scores_fall ํ•„๋“œ๊ฐ€ ๋ชจ๋‘ ๋ฐฐ์—ด์ธ ๋ฌธ์„œ๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‚ฝ์ž…์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

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

  • ๋ชจ๋“  ์ •๋ ฌ ํ•„๋“œ์˜ ์ธ๋ฑ์Šค ๊ฒฝ๊ณ„๋Š” [MinKey, MaxKey]์ž…๋‹ˆ๋‹ค.

  • ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค ํ•„๋“œ์˜ ๊ฒฝ๊ณ„์—๋Š” ์ •๋ ฌ ํŒจํ„ด๊ณผ ๋™์ผํ•œ ๊ฒฝ๋กœ ์ ‘๋‘์‚ฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์ƒค๋“œ ํ‚ค ์ธ๋ฑ์Šค๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ƒค๋“œ ํ‚ค ์ธ๋ฑ์Šค๊ฐ€ ๋ณตํ•ฉ ์ธ๋ฑ์Šค์˜ ์ ‘๋‘์‚ฌ(prefix)์ด๊ณ  (์ƒค๋“œ ํ‚ค์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ) ํ›„ํ–‰ ํ‚ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐฐ์—ด์„ ์ธ๋ฑ์‹ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๊ฐ€ ๋ณตํ•ฉ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด์‹œ ์ธ๋ฑ์Šค๋Š” ๋ฉ€ํ‹ฐํ‚ค์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋Š” ๋ฐฐ์—ด ํ•„๋“œ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋ฅผ ํฌ๊ด„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ๋ฉ€ํ‹ฐํ‚ค๋กœ ๋งŒ๋“œ๋Š” ์›์ธ์ด ๋˜๋Š” ํ•„๋“œ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋Š” ๋ฐฐ์—ด์ด ์•„๋‹Œ ํ•„๋“œ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฌํ•œ ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋œmatches ์ปฌ๋ ‰์…˜์„ ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

db.matches.insertMany( [
{ name: "joe", event: ["open", "tournament"] },
{ name: "bill", event: ["match", "championship"] }
] )

matches ์ปฌ๋ ‰์…˜์€ name ๋ฐ event ํ•„๋“œ์— ๋ณตํ•ฉ ๋‹ค์ค‘ ํ‚ค ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

db.matches.createIndex( { name: 1, event: 1 } )

event ํ•„๋“œ์— ๋ฐฐ์—ด ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด ์ธ๋ฑ์Šค๋Š” ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค.

์ผ์น˜ํ•˜๋Š” ํ•„๋“œ(name)๊ฐ€ ๋ฐฐ์—ด์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋„ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋Š” ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

db.matches.find( { name: "bill" } )

name ํ•„๋“œ๊ฐ€ ์ธ๋ฑ์Šค ์ ‘๋‘์‚ฌ์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ ์ธ๋ฑ์Šค๋Š” name ํ•„๋“œ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋Š” ๋ฐฐ์—ด ํ•„๋“œ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— name ๋ฐ event ๋ชจ๋‘์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ•„ํ„ฐ๊ฐ€ ๋ฐฐ์—ด ์ „์ฒด์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ, MongoDB๋Š” ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค ์Šค์บ”์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ๋ฐฐ์—ด์„ ์ฐพ์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋Œ€์‹ , ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์กฐํšŒํ•œ ํ›„ MongoDB๋Š” ๊ด€๋ จ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ฐฐ์—ด์ด ์ฟผ๋ฆฌ์˜ ๋ฐฐ์—ด๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฌํ•œ ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋œ inventory ์ปฌ๋ ‰์…˜์„ ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

db.inventory.insertMany( [
{ _id: 5, type: "food", item: "apple", ratings: [ 5, 8, 9 ] }
{ _id: 6, type: "food", item: "banana", ratings: [ 5, 9 ] }
{ _id: 7, type: "food", item: "chocolate", ratings: [ 9, 5, 8 ] }
{ _id: 8, type: "food", item: "fish", ratings: [ 9, 5 ] }
{ _id: 9, type: "food", item: "grapes", ratings: [ 5, 9, 5 ] }
] )

inventory ์ปฌ๋ ‰์…˜์—๋Š” ratings ํ•„๋“œ์— ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

db.inventory.createIndex( { ratings: 1 } )

๋‹ค์Œ ์ฟผ๋ฆฌ๋Š” ratings ํ•„๋“œ๊ฐ€ [ 5, 9 ]๋ฐฐ์—ด์ธ ๋ฌธ์„œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

db.inventory.find( { ratings: [ 5, 9 ] } )

MongoDB๋Š” ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ratings ๋ฐฐ์—ด์˜ ์ž„์˜ ์œ„์น˜์— 5๊ฐ€ ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ MongoDB๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์„œ๋ฅผ ์กฐํšŒํ•˜๊ณ  ratings ๋ฐฐ์—ด์ด ์ฟผ๋ฆฌ ๋ฐฐ์—ด [ 5, 9 ]์™€ ๋™์ผํ•œ ๋ฌธ์„œ๋ฅผ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

$expr ์—ฐ์‚ฐ์ž๋Š” ๋ฉ€ํ‹ฐํ‚ค ์ธ๋ฑ์Šค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ์•„๊ฐ€๊ธฐ

์ •๋ ฌ ์ˆœ์„œ