MongoDB는 [대치에 의한 수정]과 [연산자에 의한 수정]을 지원한다고 했다.
만약 이 둘을 섞어 사용하게 되면 update 명령은 실패한다.
// 대치와 연산자가 혼합되어있다 -> 오류
db.products.updateOne({}, {
'name': 'Jongpak',
'$addToSet': { 'tags': 'cheap' }
})
// 다음과 같이 해야함 (필드의 값을 바꾸는 것이 의도)
db.products.updateOne({}, {
'$set': { 'name': 'Jongpak' },
'$addToSet': { 'tags': 'cheap' }
})
여러 도큐먼트를 업데이트 하려면, 명시적으로 multi: true 를 지정하여 여러 도큐먼트에 대해 업데이트를 수행할 것이라는 것을 알려줘야한다.
db.products.update({}, { '$addToSet': { 'tags': 'cheap' } }, { multi: true })
그런데, 업데이트는 도큐먼트 수준에서 원자적이다.