try findAndModify instead of update()