要修改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()
是服务器端。