본문 바로가기

WEB/Node.JS

[express] 데이터 업데이트(update, findAndModify)

update

// name이 Kwon Hyeok Jin인 문서를 찾아 name을 Kim Hyeok Jin으로 바꾸고 age 또한 15으로 바꾼다
db.test.update({ 'name': 'Kwon Hyeok Jin' }, { 'name': 'Kim Hyeok Jin', 'age': 15 });

위 메소드를 사용할때 유의할 점은 name이 Kwon Hyeok Jin인 문서의 기존 데이터들은 전부 삭제가 되고 name, age로만 구성이 된다.

 

mongodb.collection.update({ name: 'Kwon Hyeok Jin' }, { $set: { age: 15 } }); 

 위 메소드는 $set을 사용하였다. 이렇게 사용하면 기존 데이터들은 유지가 되고 age만 15로 변경된다.

 

updateOne 메소드 또한 존재하고 여타 One 메소드와 똑같이 데이터 한개만 업데이트한다.

findAndModify

mongodb.collection.findAndModify({ query: { name: 'Kwon Hyeok Jin' }, update: { $set: { age: 15 } }, new: true });

findAndModify는 update 메소드와는 달리 upsert과 remove까지 같이 수행할 수 있다.

인자가 옵션 객체 하나인데 여러 개의 속성을 넣어줘야 한다. query가 대상을 찾는 법, update가 대상을 수정할 내용, new가 수정 이전의 다큐먼트를 반환할지, 수정 이후의 다큐먼트를 반환할 지 결정하는 부분이다. { new: true }를 넣으면 수정 이후의 다큐먼트를 반환한다.