์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์นœ๊ตฌ์•ผ, ๋˜ ๋‹ค๋ฅธ ์ฝ”์Šค ์ถœ์‹œ "๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค" ๋‚ด์ผ ์—ด๋ฆด ์˜ˆ์ •์ด์–ด์„œ ์ „ํ†ต์ ์ธ ๊ณต๊ฐœ ๋ ˆ์Šจ์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋…นํ™”๋œ ๋‚ด์šฉ์„ ์‹œ์ฒญํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—. ์ด๋ฒˆ์—๋Š” ์ธ๊ธฐ ์žˆ๋Š” MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์—ฐ๊ตฌํ•˜๊ณ  ์šด์˜, ๊ธฐ๋Šฅ ๋ฐ ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ์‚ฌ์šฉ์ž ์‚ฌ๋ก€๋„ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์›จ๋น„๋‚˜๊ฐ€ ๊ฐœ์ตœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ์ด๋ฐ˜ ๋ฒจํŠธ, Citymobil์˜ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ์ฑ…์ž„์ž.

๋ชฝ๊ณ DB ๊ธฐ๋Šฅ

MongoDB์˜ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ํ•„์š” ์—†๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ฌธ์„œ ์ค‘์‹ฌ์˜ DBMS์ž…๋‹ˆ๋‹ค. NoSQL๋กœ ๋ถ„๋ฅ˜๋˜๋ฉฐ BSON(๋ฐ”์ด๋„ˆ๋ฆฌ JSON)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰์‹œ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ JavaScript ๊ตฌ๋ฌธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. SQL์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

MongoDB์—๋Š” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(C, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby ๋“ฑ)์šฉ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ๋น„๊ณต์‹ ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์› ๋“œ๋ผ์ด๋ฒ„๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ, ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋ช…๋ น์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Docker์— MongoDB๋ฅผ ๋ฐฐํฌํ•˜๋ ค๋ฉด, ์šฐ๋ฆฌ๋Š” ์“ด๋‹ค:

docker run -it --rm -p 127.0.0.1:27017:27017 
--name mongo-exp-project mongo
docker exec -it mongo-exp-project mongo

๊ทธ๋ฆฌํ•˜์—ฌ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚œ๋‹ค ํด๋ผ์ด์–ธํŠธ ์ถœ์‹œ MongoDB :

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ด์ œ ์ „ํ†ต์ ์ธ ๊ฒƒ์„ ์ž‘์„ฑํ•ด ๋ด…์‹œ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š”:

print (โ€œHello world!โ€)

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ดํ›„ - ์‚ฌ์ดํด์„ ์‹œ์ž‘ํ•˜์ž:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

๋ˆˆ์น˜์ฑ„์…จ๋“ฏ์ด ์šฐ๋ฆฌ ์•ž์— ์ผ๋ฐ˜ JS, MongoDB๋Š” ์™„์ „ํ•œ JavaScript ์ธํ„ฐํ”„๋ฆฌํ„ฐ์ž…๋‹ˆ๋‹ค..

MongoDB๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

์‹ค๋ฆฌ์ฝ˜๋ฐธ๋ฆฌ์˜ ์ผ๋ฐ˜์ ์ธ ์Šคํƒ€ํŠธ์—…์€ ์ผ์ฃผ์ผ ์ „์— '์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ HTML'์ด๋ผ๋Š” ์ฑ…์„ ํŽด๋‚ธ ์‚ฌ๋žŒ์ด๋ผ๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Š” ์–ด๋–ค ์Šคํƒ์„ ์„ ํƒํ•  ๊ฒƒ์ธ๊ฐ€? ๋ถ„๋ช…ํ•œ ์ด์œ ๋กœ ๊ทธ์˜ ๋ธŒ๋ผ์šฐ์ €์— JavaScript๊ฐ€ ์žˆ๊ณ , Node.js๊ฐ€ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๊ณ , JavaScript๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„ ์‹คํ–‰๋˜๋ฉด ๊ทธ์—๊ฒŒ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์ด ํฌ์ธํŠธ ๋ฒˆํ˜ธ 1์ž…๋‹ˆ๋‹ค.

๋‘˜์งธ, ์žˆ๋‹ค ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ ๋Ÿฌ์‹œ์•„ ์ตœ๊ณ ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „๋ฌธ๊ฐ€ ์ค‘ ํ•œ ๋ช…์ธ Peter Zaitsev. ์—ฌ๊ธฐ์—์„œ Peter๋Š” MySQL๊ณผ MongoDB์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋ฉด์„œ ์–ธ์ œ, ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€์ง€์— ๋Œ€ํ•ด ํŠน๋ณ„ํ•œ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค.

์…‹์งธ, MongoDB์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ™•์žฅ์„ฑ -์ด๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋กœ๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ ์ง€ ๋ฏธ๋ฆฌ ๋ชจ๋ฅธ๋‹ค๋ฉด MongoDB๊ฐ€ ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ํŒจํ„ด์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ƒค๋”ฉ ะธ ๋ณต์ œ, ์ด ๋ชจ๋“  ์ž‘์—…์€ ๋งค์šฐ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž‘์—…์ด ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

...์— ๊ด€ํ•˜์—ฌ ์ˆ ์–ด MongoDB์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๊ตฌ์„ฑํ‘œ, ํ…Œ์ด๋ธ” ๋ชจ์Œ)์ž…๋‹ˆ๋‹ค.
  • MongoDB์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜ - ์ด๊ฒƒ์€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•˜๋Š” ํ…Œ์ด๋ธ” ๋ฐ ๋ฌธ์„œ ์„ธํŠธ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์„œ๋Š” ๋ฌธ์ž์—ด๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ ๋ฐ ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์„ ์‹œ์ž‘ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

use learn

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ด์ œ ๋ฌธ์„œ๋ฅผ ์ž‘๊ฒŒ ์‚ฝ์ž…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ค๋กœ๋ผ(Aurora)๋ผ๋Š” ์œ ๋‹ˆ์ฝ˜์„ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”.

db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})

db - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ์ „์—ญ ๊ฐœ์ฒด, ์ฆ‰ "monga" ์ž์ฒด์ž…๋‹ˆ๋‹ค. ์ƒค๋”ฉ์— ์‚ฌ์šฉ๋จ sh, ๋ณต์ œ์šฉ - rs.

๊ฐ์ฒด์—๋Š” ์–ด๋–ค ๋ช…๋ น์ด ์žˆ๋‚˜์š”? db:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ด์ œ ๋ช…๋ น์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด ์ฝ˜์†”์— ํ•œ ์ค„์ด ์‚ฝ์ž…๋˜์—ˆ๋‹ค๊ณ  ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์›Œ๋“œ unicorns ํŒ€์—์„œ db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) ์ปฌ๋ ‰์…˜์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ปฌ๋ ‰์…˜์„ ์„ค๋ช…ํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ๋‹จ์ˆœํžˆ '์œ ๋‹ˆ์ฝ˜'์ด๋ผ๊ณ  ์“ฐ๊ณ  ์‚ฝ์ž…์„ ํ–ˆ์œผ๋ฉฐ ์ปฌ๋ ‰์…˜์ด ์žˆ๋‹ค๋Š” ์ ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค ์šฐ๋ฆฌ ์ปฌ๋ ‰์…˜ ๋ชจ๋‘ ๊ฐ€์ ธ๊ฐ€์„ธ์š”:

db.getCollectionNames()

๋“ฑ๋“ฑ. ํ•  ์ˆ˜ ์žˆ๋‹ค ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ์‚ฝ์ž… ์ˆ˜์ง‘:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ด์ œ ๋ฌผ์–ด๋ณด์ž ์™„์ „ํ•œ ์ปฌ๋ ‰์…˜ (์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋‘ ๊ฐœ์˜ ์œ ๋‹ˆ์ฝ˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ์ƒ๊ธฐ์‹œ์ผœ๋“œ๋ฆฝ๋‹ˆ๋‹ค):

db.unicorns.find()

๋‹ค์Œ์€ JSON์ž…๋‹ˆ๋‹ค(์ด๋ฆ„, ์„ฑ๋ณ„, ์ฒด์ค‘, ์ผ๋ถ€ ๊ณ ์œ  ๊ฐœ์ฒด ์‹๋ณ„์ž๊ฐ€ ์žˆ์Œ).

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ด์ œ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์œ ๋‹ˆ์ฝ˜์„ ๋ช‡ ๊ฐœ ๋” ์‚ฝ์ž…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

db.unicorns.insert({name: 'Leto', gender: 'm', 
home: 'Arrakeen', worm: false}) 
db.unicorns.insert({name: 'Leto', gender: 'm', 
home: 'Arrakeen', worm: false})

๊ทธ๋ฆฌ๊ณ  ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ๋ด…์‹œ๋‹ค:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

๋ณด์‹œ๋‹ค์‹œํ”ผ ์ถ”๊ฐ€ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง‘ ะธ ๋ฒŒ๋ ˆ, ์˜ค๋กœ๋ผ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์œ ๋‹ˆ์ฝ˜์„ ๋ช‡ ๊ฐœ ๋” ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

db.unicorns.insertMany([{name: 'Horny', dob: new Date(1992,2,13,7,47), loves: ['carrot','papaya'], weight: 600, gender: 'm', vampires: 63}, 
{name: 'Aurora', dob: new Date(1991, 0, 24, 13, 0), loves: ['carrot', 'grape'], weight: 450, gender: 'f', vampires: 43}, 
{name: 'Unicrom', dob: new Date(1973, 1, 9, 22, 10), loves: ['energon', 'redbull'], weight: 984, gender: 'm', vampires: 182}, 
{name: 'Roooooodles', dob: new Date(1979, 7, 18, 18, 44), loves: ['apple'], weight: 575, gender: 'm', vampires: 99}])

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„ค ๊ฐœ์˜ ๊ฐœ์ฒด๋ฅผ ๋” ์‚ฝ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์—ฌ๊ถŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ Mongo ์ค‘ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋” ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

๋Œ€๋‹ต์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. Monga์—์„œ๋Š” ์œ„์˜ ์˜ˆ๊ฐ€ ์ด๋ฅผ ์ž˜ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. KLADR์ด ๋Ÿฌ์‹œ์•„ ์—ฐ๋ฐฉ์— ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ผ๋Š” ์‚ฌ์‹ค์€ ๋น„๋ฐ€์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Monga๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ฐฐ์—ด๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ  ์ƒํ™œ์ด ํ›จ์”ฌ ์‰ฌ์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์†Œ์™€ ๋งค์šฐ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ข‹์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค MongoDB์˜ ์‚ฌ์šฉ์ž ์‚ฌ๋ก€.

๋” ๋งŽ์€ ์œ ๋‹ˆ์ฝ˜์„ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

db.unicorns.insert({name: 'Solnara', dob: new Date(1985, 6, 4, 2, 1), loves:['apple', 'carrot', 'chocolate'], weight:550, gender:'f', vampires:80}); 
db.unicorns.insert({name:'Ayna', dob: new Date(1998, 2, 7, 8, 30), loves: ['strawberry', 'lemon'], weight: 733, gender: 'f', vampires: 40}); 
db.unicorns.insert({name:'Kenny', dob: new Date(1997, 6, 1, 10, 42), loves: ['grape', 'lemon'], weight: 690, gender: 'm', vampires: 39}); 
db.unicorns.insert({name: 'Raleigh', dob: new Date(2005, 4, 3, 0, 57), loves: ['apple', 'sugar'], weight: 421, gender: 'm', vampires: 2}); 
db.unicorns.insert({name: 'Leia', dob: new Date(2001, 9, 8, 14, 53), loves: ['apple', 'watermelon'], weight: 601, gender: 'f', vampires: 33}); 
db.unicorns.insert({name: 'Pilot', dob: new Date(1997, 2, 1, 5, 3), loves: ['apple', 'watermelon'], weight: 650, gender: 'm', vampires: 54}); 
db.unicorns.insert({name: 'Nimue', dob: new Date(1999, 11, 20, 16, 15), loves: ['grape', 'carrot'], weight: 540, gender: 'f'}); 
db.unicorns.insert({name: 'Dunx', dob: new Date(1976, 6, 18, 18, 18), loves: ['grape', 'watermelon'], weight: 704, gender: 'm', vampires: 165});

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ด์ œ ๋ฌธ์„œ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. ์ฒ˜๋Ÿผ dob ์šฐ๋ฆฌ๋Š” ์ „์ฒด ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์œ ๋‹ˆ์ฝ˜์ด ๋ฌด์—‡์„ ์ข‹์•„ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋„ ์žˆ์ง€๋งŒ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ด ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•ˆ์—๋Š” ๊ฑฐ์ง“๋ง์ด ์žˆ์–ด์š” ์ „์ฒด ๋ฐฐ์—ด.

๊ทธ๋Ÿฐ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ์ข€ ๋” ์•„๋ฆ„๋‹ต๊ฒŒ ํ‘œ์‹œํ•˜๋ ค๋ฉด ๊ฒ€์ƒ‰ ๋ช…๋ น์–ด ๋์— ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. .pretty():

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

๋‹น์‹ ์ด ์–ป์„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด ์ตœ๊ทผ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์ •๋ณด, ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

db.getLastError()

์‚ฝ์ž…ํ•  ๋•Œ๋งˆ๋‹ค ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ๋ฌธ์ œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ฝ๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค ๊ณต์‹ ๋ฌธ์„œ, ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , Monga์—์„œ๋Š” ๋งค์šฐ ์œ ์ตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , Habrรฉ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ์ข‹์€ ๊ธฐ์‚ฌ ์ด๊ฒƒ์— ๋Œ€ํ•ด.

์ข€ ๋” ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํ•œ ํ•„๋“œ ๊ฐ’ ์ฟผ๋ฆฌ:

db.unicorns.find({gender: 'm'})

์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ์ž‘์„ฑํ•˜๋ฉด ์ฝ˜์†” ์ถœ๋ ฅ์— ๋ชจ๋“  ์ˆ˜์ปท ์œ ๋‹ˆ์ฝ˜ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋˜ํ•œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ํ•„๋“œ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ: ์„ฑ๋ณ„ ๋ฐ ์ฒด์ค‘๋ณ„ :

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์œ„์˜ ํŠน๋ณ„ํ•œ ์ ์— ์ฃผ๋ชฉํ•˜์‹ญ์‹œ์˜ค. $gt ์„ ํƒ๊ธฐ, ๋ชธ๋ฌด๊ฒŒ๊ฐ€ 700์ด ๋„˜๋Š” ๋ชจ๋“  ์ˆ˜์ปท ์œ ๋‹ˆ์ฝ˜์„ ๋ฒˆ์‹์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ํ•„๋“œ๊ฐ€ ์ „ํ˜€ ์กด์žฌํ•ฉ๋‹ˆ๊นŒ?:

db.unicorns.find({vampires: {$exists: false}})

๋˜๋Š” :

db.unicorns.find({'parents.father': {$exists: true}})

๋‹ค์Œ ํŒ€์€ ์œ ๋‹ˆ์ฝ˜์„ ๊บผ๋‚ด๊ณ , ์ด๋ฆ„์ด ๋ฌธ์ž A ๋˜๋Š” a๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ:

db.unicorns.find({name: {$regex: "^[Aa]"}})

์ด์ œ ๊ณ ๋ คํ•ด ๋ด…์‹œ๋‹ค ๋ฐฐ์—ด ๊ฒ€์ƒ‰. ์งˆ๋ฌธ #1: ์ด ๋ช…๋ น์€ ๋ฌด์—‡์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๊นŒ?

db.unicorns.find({loves:'apple'})

๋งž์Šต๋‹ˆ๋‹ค. ์‚ฌ๊ณผ๋ฅผ ์‚ฌ๋ž‘ํ•˜๋Š” ๋ชจ๋“  ๋ถ„๋“ค.

๋‹ค์Œ ๋ช…๋ น์€ ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ์œ ๋‹ˆ์ฝ˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๊ณผ์™€ ์ˆ˜๋ฐ•๋งŒ ์žˆ์–ด์š”:

db.unicorns.find({loves:[ "apple", "watermelon" ]})

๊ทธ๋ฆฌ๊ณ  ๋ช…๋ น ํ•˜๋‚˜ ๋”:

db.unicorns.find({loves:[ "watermelon", "apple" ]})

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•  ๋•Œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์™€ ๋น„๊ต๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์™€ ๋น„๊ต๋˜๋ฏ€๋กœ ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐฐ์—ด๋„ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์น˜๋ณ„ ์ด ๊ฐ’.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋ณด์ด๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค "OR" ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ๊ฒ€์ƒ‰:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

๋‹ค์Œ ์˜ˆ๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค $all ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

๋˜ํ•œ ์šฐ๋ฆฌ๋Š” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๋ฐฐ์—ด ํฌ๊ธฐ๋กœ ๊ฒ€์ƒ‰:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

ํ•˜์ง€๋งŒ ํฌ๊ธฐ๊ฐ€ XNUMX๋ณด๋‹ค ํฐ ๋ฐฐ์—ด์„ ์ฐพ๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ์ด์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค $์–ด๋””๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋ณต์žกํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

db.unicorns.find({$where: function() { return this.loves && (this.loves.length > 1) } })

๊ทธ๋Ÿฐ๋ฐ, ์—ฐ์Šตํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์—ฌ๊ธฐ ์žˆ๋„ค. ๋ช…๋ น์ด ํฌํ•จ๋œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

์ปค์„œ ๊ธฐ๋Šฅ

์ž ์‹œ ๋ฒ—์–ด๋‚˜ Monga์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋ช‡ ๋งˆ๋”” ๋งํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • find() ๋ฐ ๊ธฐํƒ€ ์ž‘์—…์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์†Œ์œ„ "์ปค์„œ"๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ์‡„๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋Š” ๊ฒƒ์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

ํƒ€์ž db.unicorns.find ๊ด„ํ˜ธ๊ฐ€ ์—†์œผ๋ฉด ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์„œ ์š”์ฒญ์„ ์ดํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$in ์—ฐ์‚ฐ์ž๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

db.unicorns.find({weight: {$in: [650, 704]}})

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ด์ œ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.. ์˜ˆ๋ฅผ ๋“ค์–ด Rooooodles ์œ ๋‹ˆ์ฝ˜์˜ ๋ฌด๊ฒŒ๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

db.unicorns.update({name: "Roooooodles"}, {weight: 2222})

์šฐ๋ฆฌ์˜ ์กฐ์น˜์˜ ๊ฒฐ๊ณผ๋กœ ๋ฌธ์„œ ์™„์ „ํžˆ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค, ์ง€์ •๋œ ํ•„๋“œ ํ•˜๋‚˜๋งŒ ๋‚จ์Šต๋‹ˆ๋‹ค.

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ฆ‰, ์šฐ๋ฆฌ ๊ฐ์ฒด์— ๋‚จ์„ ์œ ์ผํ•œ ๊ฒƒ์€ ๊ฐ€์ค‘์น˜ 2222์™€ ๋ฌผ๋ก  id์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํ™ฉ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. $์„ธํŠธ:

db.unicorns.update({_id: ObjectId("5da6ea4d9703b8be0089e6db")}, {$set: { "name" : "Roooooodles", "dob" : ISODate("1979-08-18T18:44:00Z"), "loves" : [ "apple" ], "gender" : "m", "vampires" : 99}})

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค ์ฆ๋ถ„ ๊ฐ’:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์—์žˆ๋‹ค. ์—…์„œํŠธ - ์—…๋ฐ์ดํŠธ์™€ ์‚ฝ์ž…์˜ ์กฐํ•ฉ:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•„๋“œ ์„ ํƒ:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

์— ๋Œ€ํ•ด ๋ช‡ ๋งˆ๋”” ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฑด๋„ˆ ๋›ฐ๊ธฐ ะธ ์ œํ•œ:

์›น ์„ธ๋ฏธ๋‚˜ "MongoDB ๊ธฐ์ดˆ" ์—ด๊ธฐ

๋™๋ฃŒ ์—ฌ๋Ÿฌ๋ถ„, ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์ „์ฒด ์˜์ƒ ๋ณด๊ธฐ. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ์„ ๋‚จ๊ธฐ๋Š” ๊ฒƒ๋„ ์žŠ์ง€ ๋งˆ์„ธ์š”!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€