일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- nodejs
- Nest.js
- Sequelize
- Express
- MongoDB
- 공룡게임
- class
- react
- 게임
- jest
- dfs
- Dinosaur
- cookie
- flask
- TypeScript
- MySQL
- nestjs
- JavaScript
- 정렬
- OCR
- mongoose
- Bull
- typeORM
- GIT
- 자료구조
- Python
- AWS
- game
- Queue
- Today
- Total
목록Update (2)
포시코딩
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ekVjw1/btrSMHzCaxH/6GOLlBPBcAKliLEEVFGd40/img.png)
개요 위 사진과 같은 collection이 있을 때, members 안에 멤버 Object를 추가해줘야 하는 상황이다. Raid.updateOne( { _id: ObjectId(_id) }, { $push: { members: 멤버 Object } } // ...생략 ); 일반적이면 그냥 updateOne에 $push를 쓸테지만 데이터가 얼마나 많을지 몰라 이걸 계속 디비에 반복해서 작업하게 할 순 없었다. 목적은 요청 한번으로 디비안에 members에 [member1, member2, member3, ...]을 기존 데이터에 추가로 넣어주는 것이었는데 Array에 대해 $each를 써줌으로 해결할 수 있었다. $each 말그대로 Array의 각 데이터를 그 위의 명시해놓은 $push 처리를 해주는 방식..
{ _id: '1', members: [ { _id: '0001', id: 'Sam', rank: 0 }, { _id: '0002', id: 'Kim', rank: 1 } ], name: '테스트그룹' } Collection의 이름이 Target이고 0002의 랭크를 5로 변경하고 싶을 때, (Mongoose model을 target으로 만든 후 라고 가정) Target.updateOne( { _id: '1', members: { $elemMatch: { _id: '0002' } } // 또는 아래와 같이 간단하게 표현 가능 // 'members._id': '0002' }, { $set: { 'members.$.rank': 5 } }, (err, data) => { // } );