본문 바로가기

IT/Database

[mongodb] findAndModify

findAndModify query (upsert)


db.users.findAndModify({ query:{name:"kkhyun"}, update:{$set:{age:20,gift:"computer"}}, upsert:true })


db.runCommand( { findAndModify:"users", query:{name:"kkhyun"}, update:{$set:{age:20}}, upsert:true } )


적용해보니 command상, api상으로 정상 동작하는 것을 확인하였다.


update와의 다른점은 atamic한 특성으로, 각 명령마다 lock을 가져다 쓴다는 점이다.


이때문인지 findAndModify가 update보다 조금 느리다는 글이 있었는데


실제로 적용해보니 차이는 거의 느껴지지는 않았고 적어도 더 빠르지는 않았다....


그리고 실제로 lock이 걸리는게 맞는듯하다.


기존에 수행하고 있던 update 작업들이 현저하게 느려지는것을 발견했다...


--> findAndModify... 앞으로 쓸 일이 있을까...