在猫鼬中使用 .save() 时停止自动更改 updatedAt 时间戳

Stop automatic change of updatedAt timestamp while using .save() in mongoose

我有一个集合,其中的文档具有自动生成的 createdAtupdatedAt 字段。当然,在更新任何文档时,updateAt 时间戳也会发生变化。我知道我可以从 mongoose 5.9.3 开始将 { timestamps: false } 标志传递给我的更新查询,但是 我不能使用更新查询来满足我当前的需求.

对于某些计算,我必须先找到元素,对某些字段进行更改,然后手动使用 document.save() 方法更新文档(是的,我知道我将面临的并发问题,我已经单独处理了)。我这里唯一的问题是我不想在执行 .save() 时更新 updateAt 时间戳。谁能告诉我正确的做法是什么?

嗯,我想我应该更仔细地阅读 documentation!实际上,您也可以在 .save() 中传递相同的 { timestamps: false } 选项,它将像在 update 查询中一样工作!

Mongoose 足够聪明,可以跟踪文档中的确切更改,并能够在后台为您的操作构建更新查询,因此在一天结束时它仍然是一个正常的 update

这段代码应该可以解决问题:

document.save({ timestamps: false })