일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Linux
- multidex
- Mongoose
- Mongo
- centos
- pbkdf2-password
- node
- OOP
- MEAN stack
- instance
- 64k method
- Java
- event-driven
- Modulization
- API테스트
- elemMatch
- window
- Android
- ssh key
- Express
- MaridDB
- react-native
- PBKDF2
- 다중 서버 명령
- Setup
- iIntelliJ
- proguard
- rest-assured
- Git
- memory structure
Archives
- Today
- Total
천줄코딩도 한 걸음부터
MongoDB 기존 document에 데이터 추가하기 $push 본문
Stack overflow와 Velopert님의 블로그를 참조하였습니다.
기존 document를 변경은 다음과 같은 명령으로 수행할 수 있었습니다.
db.collection_name.update({document 쿼리 조건}, {변경할 데이터})'
하지만 이렇게 변경하게 되면 중복된 key의 데이터에 경우 기존 데이터에 덮어쓰기가 됩니다.
ex)
{ "name" : "abc", "item" : [{ "name" : "sword", "price" : 1000 }, { "name" : "helm", "price" : 500 }] }
이 document의 item에 armor 객체를 추가하려고 합니다.
db.user.update({ name : "abc" }, { item : [{ name : "armor", price : 800 }]})
이 문장을 실행하면 sword와 helm은 몽땅 날아가고 armor만 남게됩니다.
원하는 의도대로 추가하려면 기존의 데이터를 함께 적어주어야합니다.
db.user.update({ name : "abc" }, { item : [{ name : "sword", price : 1000 }, { name : "helm", price : 500 }, { name : "armor", price : 800 }]})
하지만 기존 데이터를 불러와야하기 때문에 번거로우며 I/O의 낭비로 이어질 수 있을 것 같습니다.
구글링으로 원하는 결과를 찾을 수 있었습니다.
update시 $push 옵션을 통해 새로운 데이터를 기존 데이터에 추가할 수 있다고 합니다.
위에 map을 사용하지 않는다면 $each 부분에 직접 데이터를 입력해도 무관합니다.
아래와 같이 입력하면 원하는 결과를 얻을 수 있습니다.
db.user.update({ name : "abc" }, { $push : { item : { name : "armor", price : 800 }}});
'Others' 카테고리의 다른 글
Node.js multiparty 이용해 File upload - ajax (2) | 2017.07.09 |
---|---|
MongoDB find elemMatch projection option (0) | 2017.07.08 |
Mongoose로 Node.js와 연결 시 DeprecationWarning (0) | 2017.07.06 |
Node.js 비밀번호 보안(Password Security) (0) | 2017.07.06 |
MongoDB를 통해 Node.js에서 간단한 REST API 구현 (0) | 2017.07.06 |