要修改Mongoose现有条目中的字段,使用之间有什么区别

model = new Model([...])
model.field = 'new value';
model.save();

和这个

Model.update({[...]}, {$set: {field: 'new value'});

我问这个问题的原因是由于某人对我昨天发布的问题的建议:nodejs和mongo-同时多个用户同时发送请求时的意外行为。建议使用更新而不是保存的人,我还不完全确定为什么会有所作为。

谢谢!

答案

首先是两个概念。您的申请是Client ,mongodb是Server

主要区别是.save()您的客户端代码中已经有一个对象,或者必须在写回到服务器之前从服务器中检索数据,并且您正在写回整个内容。

另一方面.update()not 要求将数据从服务器加载到客户端。所有的交互发生在服务器端而无需检索到客户端。.update()当您将内容添加到现有文档中时,可以以这种方式非常有效。

另外,还有multi参数为.update()这允许在与查询条件匹配的多个文档上执行操作。

在使用时,您会失去一些方便方法.update()作为一个电话,但是某些操作的好处是您必须承担的"权衡"。有关此的更多信息以及可用的选项,请参阅文档

简而言之.save()是客户端接口,.update()是服务器端。

来自: stackoverflow.com