修改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 .该人建议使用更新而不是保存,我还不完全确定为什么会有所作为。
谢谢!
最佳答案
首先是两个概念。你的应用是Client,Mongodb是Server。
主要区别在于 .save()
您的客户端代码中已经有一个对象,或者在写回之前必须从服务器检索数据,并且您正在写回整个内容。
另一方面 .update()
不是否要求将数据从服务器加载到客户端。所有的交互都发生在服务器端而不检索到客户端。所以 .update()
当您向现有文档添加内容时,这种方式会非常有效。
另外还有multi
.update()
的参数允许对多个与查询条件匹配的文档执行操作。
在使用 .update()
时,您会丢失一些便捷方法中的内容。作为一个电话,但某些操作的好处是你必须承担的“权衡”。有关这方面的更多信息以及可用的选项,请参阅 documentation .
总之.save()
是客户端接口(interface),.update()
是服务器端。
https://stackoverflow.com/questions/22278761/