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... 앞으로 쓸 일이 있을까...
'IT > Database' 카테고리의 다른 글
[mysql] index 관련 명령어 (0) | 2014.12.26 |
---|---|
[mongodb] 정말정말 유용한 slide (0) | 2014.12.18 |
[mongodb] mongodb의 성능과 memory의 관계를 잘 설명한 글 (0) | 2014.12.11 |
[mongodb] mongostat 중 일부 (0) | 2014.12.11 |
[mongodb] mongodb에 대한 한탄 (0) | 2014.12.10 |