Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- Express
- Python
- 정렬
- MySQL
- jest
- OCR
- AWS
- Bull
- react
- cookie
- 게임
- MongoDB
- Nest.js
- TypeScript
- dfs
- 자료구조
- Dinosaur
- game
- Sequelize
- typeORM
- GIT
- nestjs
- 공룡게임
- Queue
- JavaScript
- flask
- class
- nodejs
- mongoose
Archives
- Today
- Total
포시코딩
[Express + Mongoose] Array에 담긴 데이터 여러개 update $push 하기 본문
728x90
개요
위 사진과 같은 collection이 있을 때, members 안에 멤버 Object를 추가해줘야 하는 상황이다.
Raid.updateOne(
{ _id: ObjectId(_id) },
{
$push: {
members: 멤버 Object
}
}
// ...생략
);
일반적이면 그냥 updateOne에 $push를 쓸테지만
데이터가 얼마나 많을지 몰라 이걸 계속 디비에 반복해서 작업하게 할 순 없었다.
목적은 요청 한번으로 디비안에 members에 [member1, member2, member3, ...]을 기존 데이터에 추가로 넣어주는 것이었는데
Array에 대해 $each를 써줌으로 해결할 수 있었다.
$each
말그대로 Array의 각 데이터를 그 위의 명시해놓은 $push 처리를 해주는 방식이다.
Raid.updateOne(
{ _id: ObjectId(_id) },
{
$push: {
members: {
$each: member_object_arr // [member1, member2, ...]
}
}
},
// ...생략
);
코드를 위와 같이 수정하고 바로 테스트해보자.
생각대로 Array안의 데이터가 각각 잘 push 됐다.
근데 받아온 Array 그대로 넣어줬기 때문에 _id가 ObjectId화 되어있지 않은 모습이다.
이 부분은 그냥 forEach돌며 바꿔주는 식으로 처리했다.
N만큼의 시간복잡도가 추가되는 것이기에 큰 영향이 없다고 판단
결과확인
Mongoose에서 이렇게 Array 안에 담긴 데이터들을 한번에 $push 하는 법에 대해 알아보았다.
참고사이트:
https://attacomsian.com/blog/mongoose-push-pull-items-from-array
728x90
'Node.js' 카테고리의 다른 글
Node.js 학습목표 (0) | 2022.12.12 |
---|---|
[Node.js] with 논 블로킹, 싱글 스레드, 이벤트 루프 (0) | 2022.12.12 |
[Express + Axios] DELETE 요청 시 body에 데이터 넣는 법 (0) | 2022.11.29 |
Express + mongoose(몽구스) 사용법 (0) | 2022.11.14 |
Express + mongoose(몽구스) 연결하기 (0) | 2022.11.14 |