업데이트, 원자적 연산, 삭제

원자성이란 다른 작업이 방해하지 않음을 보장하면서 도큐먼트를 검색하고 업데이트하는 Mongo의 기능이다.

업데이트

업데이트는 이전에 봤듯이 $set이거나 replace다.

대치 vs. 연산자

대치는 일반적이다. update 쿼리 자체를 일반적으로 가져가려면 대치가 더 맞을 것이다. 반면에 연산자는 조금 더 성능적 우윌를 갖는다. 업데이트할 데이터를 불러올 필요가 없다. 또한 원자적으로 업데이트하는 데 적합하다. 대치 방식은 일관성을 깨뜨릴 수 있다. 대치는 일반적으로 당기고 엎는다. 문제는 당기고 엎는 사이에 수정이 생길 수 있다. 이를 race Condition라고 할 수 있다.

그래서? findAndModfy(Deprecated)가 원자적 업데이트가 가능하게 해준다. 원자적 업데이트는 다른 연산이 interrupt하거나 interleave할 수 없는 업데이트다. findAndModify가 아니라면 변경된 후의 데이터를 보장 받을 수 없다. (update -> select 하는 찰나에 다른 데이터로 엎으면?)