现有 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 上的现有用户上呈现
ABNewPersonViewController 可以用来编辑现有记录吗?