I think the issue is probably with how you're updating self.items inside the update method. If you're calling char.inv.update(...) from within addItem(), you need to make sure you're passing in the most up-to-date invDBObject, because update() itself doesn’t know where to get the latest data.