要修改 Mongoose 现有条目中的字段,使用之间有什么区别
model = new Model([...])
model.field = 'new value';
model.save();
和这个
Model.update({[...]}, {$set: {field: 'new value'});
我问这个问题的原因是因为有人建议我昨天发布一个问题:NodeJS and Mongo - Unexpected behaviors when multiple users send requests simultaneously。该人员建议使用更新而不是保存,但我尚不完全清楚为什么会有所作为。
谢谢!
最佳答案
首先有两个概念。您的应用程序是客户端,Mongodb是服务器。
主要区别在于,使用.save()
时,客户端代码中已经有一个对象,或者必须先从服务器检索数据,然后再写回整个内容。
另一方面,.update()
是否而不是要求将数据从服务器加载到客户端。所有交互都发生在服务器端,而无需检索到客户端。因此,在向现有文档中添加内容时,.update()
可以非常有效。
另外,multi
中有.update()
参数,该参数允许对多个符合查询条件的文档执行操作。
使用.update()
进行调用时,便利方法中有些东西会丢失,但是某些操作的好处是您必须承担“权衡”。有关此信息和可用选项的更多信息,请参见documentation。
简而言之,.save()
是客户端接口(interface),.update()
是服务器端。