javascript - .save() 和使用 update() 之间的 Mongoose 区别

修改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/

相关文章:

json - 从数据库存储和查询 JSON

ruby-on-rails - 批量查找 mongoDB 记录(使用 mongoid ruby​​

ruby-on-rails - mongoid 中 embeds_many 和 has_many 的

mongodb - 在 MongoDB 中使用 UUID 而不是 ObjectID

mongodb - 如何使用 Scala 将 1 亿条记录加载到 MongoDB 中进行性能测试?

mongodb - Mongoose中的级联样式删除

mongodb - 如何使用多个 ip 地址设置 mongod.conf bind_ip

mongodb - 如何启动 mongodb shell?

node.js - 如何使用 Mongoose findOne

mongodb - 在 node.js 和 mongodb 中创建注册和登录表单