7.1文档更新

7.1.1通过替换修改
通过查询获取整个文档doc,设置doc的email属性后,通过update更新整个文档。
替换是更通用的做法。想象一下通过引用HTML表单来更新用户user数据。使用文档替换时,数据从表单提交,一旦验证,就可以传递给MongoDB,不管那个字段被更新,代码执行更新是相同的。但是这种方式不友好在于网络传输文档,文档太大会过慢。
高并发环境中,通过替换进行修改时,还可能会导致数据丢失(图7.4),因为替换修改的步骤是先获取文档,然后修改文档,最后替换文档。在这个过程中可能数据被修改。

7.1.2通过操作符修改(目标更新)
示例:
目标更新通常使用更新操作符,而且操作符通常使用动词构造(set、push、addToSet......)。
目标更新通常可以获得更好的性能。文档更行通常很小。此外,目标操作允许原子更新文档。原子更新文档使用乐观锁来实现。(原子更新用来表示目标更新)。
高并发环境中,也同样适用。





posted @ 2021-01-15 09:48  _Shing  阅读(164)  评论(0)    收藏  举报