...

๋ฐฐ์ด ์์ ์ฐ์ฐ์
$
list: [1, 2, 3] ์ด๋ผ๋ ํ๋๊ฐ ์๋ค๊ณ ์นฉ์๋ค.
// list: [1, 2, 3]
// list: 2 ๋ฅผ ๊ธฐ์ตํด์ list.2์ ์์๊ฐ์ 5๋ก ๋ฐ๊พผ๋ค.
db.zero.update({ list: 2 }, { 'list.$': 5 }) // list: [1, 5, 3]
์์ ์ฟผ๋ฆฌ๋ฅผ ํตํด ๋ ๋ฒ์งธ ์์๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์ฆ ์ฐพ์ ๊ฐ์ ์์น๋ฅผ ๊ธฐ์ตํ๋ ์ฐ์ฐ์์ ๋๋ค.
$addToSet
- ๋ฐฐ์ดํ๋์ ํด๋น ์์๊ฐ ์์ผ๋ฉด ์ถ๊ฐํ๊ณ , ์์ผ๋ฉด ์๋ฌด๊ฒ๋ ํ์ง ์์ต๋๋ค.
- ๋ชฝ๊ณ DB์์ ์์ฒด์ ์ผ๋ก ๋ฐฐ์ด์ ํด๋น ์์๊ฐ ์๋์ง ๊ฒ์ฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ํธํฉ๋๋ค.
{ $addToSet: { ํ๋1: ๊ฐ, ํ๋2: ๊ฐ, ... } }
$pop
- ๋ฐฐ์ด ๋ฉ์๋์ฒ๋ผ ๋ชฝ๊ณ DB ๋ฐฐ์ด์์ ๋งจ ์ ๋๋ ๋งจ ๋ค ์์๋ฅผ ๊บผ๋ด๋ ๊ฒ๋๋ค.
- shift์ pop์ ํฉ์ณ๋์ ์ฐ์ฐ์์ ๋๋ค.
- -1 ๊ฐ์ shift ๊ธฐ๋ฅ,
- 1 ๊ฐ์ pop ๊ธฐ๋ฅ์ ํฉ๋๋ค.
{ $pop: { ํ๋1: ยฑ1, ํ๋2: ยฑ1, ... } }
$pull
- ๋ฐฐ์ด์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํน์ ํ ์์๋ฅผ ๊บผ๋ ๋๋ค.
- ๊บผ๋ด๋ ์กฐ๊ฑด์ ์ฟผ๋ฆฌ ์ฐ์ฐ์์ ๊ฐ์ต๋๋ค.
{ $pull: { ์กฐ๊ฑด1, ์กฐ๊ฑด2, ... } }
$pullAll
- $pull ์ฐ์ฐ์์๋ ๋ฌ๋ฆฌ $pullAll์ ์กฐ๊ฑด์ด ์๋๋ผ ๊ทธ๋ฅ ์ผ์นํ๋ ๊ฐ์ ๋ฐฐ์ด์์ ๊บผ๋ ๋๋ค.
{ $pullAll: { ํ๋: [๊ฐ1, ๊ฐ2, ...] } }
$push
- ๋ฐฐ์ด ํ๋์ ๊ฐ์ pushํฉ๋๋ค.
{ $push: { ํ๋1: ๊ฐ, ํ๋2: ๊ฐ, ... } }
์กฐ์ฌํด์ผํ ๊ฒ์ ๊ฐ์ด ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ ํ ๋ฒ์ pushํด๋ฒ๋ฆฝ๋๋ค.
๋ง์ฝ ์๋ [1, 2]๋ผ๋ ๋ฐฐ์ด์ด ์๋ค๋ฉด [3, 4, 5]๋ฅผ pushํ ๊ฒฝ์ฐ [1, 2, [3, 4, 5]]๊ฐ ๋์ด๋ฒ๋ฆฝ๋๋ค.
3, 4, 5๋ฅผ ๋ฐ๋ก๋ฐ๋ก pushํ๊ณ ์ถ๋ค๋ฉด $each ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
{ $push: { ํ๋: { $each: ๋ฐฐ์ด } } }
$each
- ๋ฐฉ๊ธ ์์์๋ ์ฌ์ฉ๋์์ต๋๋ค. ๋ค๋ฅธ ์ฉ๋ก๋ก $addToSet๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
$addToSet๋ $push์ฒ๋ผ ํ ๋ฒ์ ๋ฐฐ์ด์ ์ง์ด๋ฃ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก๋ฐ๋ก ๋ฃ๊ณ ์ถ๋ค๋ฉด
{ $addToSet: { ํ๋: { $each: ๋ฐฐ์ด } } }
$position
- ์ญ์ $push๋ฅผ ๋ณด์กฐํ๋ ์ญํ ๋ก ์ฌ์ฉ๋๊ณ , $each์ ํจ๊ป ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค.
- $pushํ ์์น๋ฅผ ์ง์ ํ๋ ์ญํ ์ ํฉ๋๋ค.
{ $push: { ํ๋: { $each: ๋ฐฐ์ด, $position: ์์น } }
๋ง์ฝ ๊ธฐ์กด์ [1, 2, 3]์ด ์๊ณ , $each๋ก ์ถ๊ฐํ ๋ฐฐ์ด์ด [4, 5, 6]์ด๋ฉฐ $position์ด 0์ด๋ฉด [4, 5, 6, 1, 2, 3]์ด ๋ฉ๋๋ค.
๋ง์ฝ $position์ด 2๋ฉด, [1, 2, 4, 5, 6, 3]์ด ๋ฉ๋๋ค.
Reference
https://www.zerocho.com/category/MongoDB/post/57a46d287c4a5115004e97eb
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.