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