在mongodb中保存或更新文档时如何防止更新“updatedAt”字段?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mongodb中保存或更新文档时如何防止更新“updatedAt”字段?相关的知识,希望对你有一定的参考价值。

我想在mongodb更新集合文件,但我不希望更新“updatedAt”字段。我想保留更新字段的先前值。请帮忙。

答案

如果您正在使用Waterline或其他数据库抽象,我的建议是在mongo中本地运行查询。

这是我在Sails.js(运行Waterline)中解决这个问题的方法:

let someQuery = {name: 'John Doe'}; 

MyModel.native(function (err, collection){
  collection.update(
    {query: someQuery},                   // Which documents to update?
    {$set:{field1: "value", foo:"bar"}},  // Our new values
    {multi: true},                        // To support update of multiple fields
    function(err, result){
      if (err) console.log(err)
      else console.log(result.result)
    })
});
另一答案

当您使用mongoose的更新查询时,updatedAt字段会更新。如果我们直接使用$set查询它只会更新$ set query中提到的字段。原因是updatedAt字段由mongoose管理,而不是由mongodb管理。

以上是关于在mongodb中保存或更新文档时如何防止更新“updatedAt”字段?的主要内容,如果未能解决你的问题,请参考以下文章

更新 mongodb 文档时删除的字段

如何使用 Java 对 MongoDB 中的文档进行批量更新?

MongoDB 更新文档

MongoDB - 如何确保多次更新都成功?

如何使用 C# 驱动程序在 MongoDB 中更新和更新多个文档

使用 findOne 更新 mongoDB 文档中的子字段并保存