업데이트, 원자적 연산, 삭제
원자성이란 다른 작업이 방해하지 않음을 보장하면서 도큐먼트를 검색하고 업데이트하는 Mongo의 기능이다.
업데이트
업데이트는 이전에 봤듯이 $set이거나 replace다.
대치 vs. 연산자
대치는 일반적이다. update 쿼리 자체를 일반적으로 가져가려면 대치가 더 맞을 것이다. 반면에 연산자는 조금 더 성능적 우윌를 갖는다. 업데이트할 데이터를 불러올 필요가 없다.
또한 원자적으로 업데이트하는 데 적합하다. 대치 방식은 일관성을 깨뜨릴 수 있다. 대치는 일반적으로 당기고 엎는다.
문제는 당기고 엎는 사이에 수정이 생길 수 있다. 이를 race Condition라고 할 수 있다.
그래서? findAndModfy(Deprecated)가 원자적 업데이트가 가능하게 해준다. 원자적 업데이트는 다른 연산이 interrupt하거나 interleave할 수 없는
업데이트다. findAndModify가 아니라면 변경된 후의 데이터를 보장 받을 수 없다. (update -> select 하는 찰나에 다른 데이터로 엎으면?)