Mongoose: findAndModify๋ฅผ ์‚ฌ์šฉํ•œ findOneAndUpdate

์— ๋งŒ๋“  2016๋…„ 07์›” 10์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Automattic/mongoose

findOneAndUpdate ๋ฉ”์„œ๋“œ๊ฐ€ findOneAndUpdate ๋Œ€์‹  findAndModify ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํˆฌ์˜ ์„ค์ •์„ ์ „๋‹ฌํ•ด์•ผ ํ•˜์ง€๋งŒ findAndModifiy ๊ฐ€ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ์ „์ฒด ๋ฌธ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ:

Product
      .findOneAndUpdate({
        _id: productId,
      }, {
        $push: {colors: data},
      }, {
        projection: {
          name: 1, 'colors.$': 1,
        },
        returnNewDocument: true,
      })

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์˜ˆ, ๋ชจ๋“  API๊ฐ€ ๊ณ ์œ ํ•œ ๋ˆˆ์†ก์ด๊ฐ€ ๋˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ํ˜ผ๋ž€์ด ์žˆ์Šต๋‹ˆ๋‹ค. :) ์ด์ œ mongodb ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๊ณ ์œ ํ•œ ๋‹จ์ ์ด ์žˆ๋Š” findOneAndUpdate() ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์•„์ง mongoose์˜ fineOneAndUpdate( )

๋ชจ๋“  3 ๋Œ“๊ธ€

mongoose์˜ findOneAndUpdate() long์€ ๊ธฐ๋ณธ mongodb ๋“œ๋ผ์ด๋ฒ„์—์„œ findOneAndUpdate() ์˜ ์กด์žฌ๋ณด๋‹ค ์•ž์„œ๊ณ  ๋“œ๋ผ์ด๋ฒ„์˜ findOneAndUpdate() ๋Š” ์–ด์จŒ๋“  findAndModify ์ฃผ๋ณ€์˜ ์–‡์€ ๋ž˜ํผ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋“œ๋ผ์ด๋ฒ„์˜ findOneAndUpdate() ์—๋Š” ํŠนํžˆ new ์˜ต์…˜๊ณผ new ์™€ returnNewDocument ์˜ ์ฐจ์ด์™€ ๊ด€๋ จ๋œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ฐœํ•œ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ชฝ๊ตฌ์Šค์—๊ฒŒ ๊ณจ์นซ๊ฑฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ์…˜์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ findAndModify ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„์ด๊ธฐ ๋•Œ๋ฌธ์— 'ํ”„๋กœ์ ์…˜' ๋Œ€์‹  'ํ•„๋“œ'๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.

๋ช…ํ™•ํžˆ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, fields ๋Œ€ projection ๋ฐ new ๋Œ€ returnNewDocument ์™€ ๊ฐ™์ด ์ด๋ฆ„ ์ง€์ •์— ์ด์ƒํ•œ ์ฐจ์ด์ ์ด ์žˆ์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋ชจ๋“  API๊ฐ€ ๊ณ ์œ ํ•œ ๋ˆˆ์†ก์ด๊ฐ€ ๋˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ํ˜ผ๋ž€์ด ์žˆ์Šต๋‹ˆ๋‹ค. :) ์ด์ œ mongodb ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๊ณ ์œ ํ•œ ๋‹จ์ ์ด ์žˆ๋Š” findOneAndUpdate() ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์•„์ง mongoose์˜ fineOneAndUpdate( )

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰