现有 Model.Document 上 .save() 的有效替代方案

Posted

技术标签:

【中文标题】现有 Model.Document 上 .save() 的有效替代方案【英文标题】:Efficient Alternative for .save() on existing Model.Document 【发布时间】:2021-08-13 12:18:27 【问题描述】:

我对退出文档的 .save 有一些疑问。

我正在寻找更新文档的有效解决方案。

我听说过 .updateOne() ,但我对它感到陌生,因为我必须解析出应该更新的字段,然后解析出整个缓存文档中的值。

.save() ,保存我所有的工作,但我正在寻找替代方案,因为发生了 parallelsaveerror,当我有许多快速请求要保存并且我必须将文档缓存为“猫鼬文档”时(我不之前想取它),这使用了很多内存。

提前谢谢!

Version:
mongoose: ^5.10.2,
nodejs: v14.15.5
mongodb: node driver on mongodb atlas

【问题讨论】:

【参考方案1】:

这是来自 moongose 的 bulkWrite 操作

let queryOperation = [];
      queryOperation.push(
          updateOne: 
            filter: hereGoesWhereCondition, //_id: user._id
            update: data, // object of fields to update
          
        );
      const name = await model.bulkWrite(queryOperation); //model is the table in which you want to update

【讨论】:

重点是,我不想解析出要手动更新的字段。当我有两个版本的文档时,是否有任何更简单的解决方案或任何功能。我可以比较它,然后它会自动为我提供要更新的字段? 我猜不,可能有人想出了一些技巧 但一定有一些东西,猫鼬库在后端做了什么

以上是关于现有 Model.Document 上 .save() 的有效替代方案的主要内容,如果未能解决你的问题,请参考以下文章

Rails friendly_id 不会在 heroku 上的现有用户上呈现

为现有项目创建/更新 package.json

PHP中collection.save()的等价物是啥?

ABNewPersonViewController 可以用来编辑现有记录吗?

在 Django 模型中使用 save() 会产生 TypeError

Backbone,Node和Mongo错误验证和通信