node.js - 跳过 Mongoose 中某些更新的时间戳中间件

标签 node.js mongodb mongoose mongoose-schema

我的应用程序使用 Mongoose,并且有一个使用 timestamps option 的架构。 :

var fooSchema = new Schema({
    name: String,
}, {
    timestamps: true,
});
mongoose.model('Foo', fooSchema);

因此,每当向集合写入更新时,updatedAt 属性都会更改为当前日期。但现在我想添加一些不应该 更新 updatedAt 属性的更改。 Stackoverflow ( example ) 上的一些答案建议使用 Foo.collection ,因为它据称会访问 native MongoDB 驱动程序。所以我尝试了这个:

Foo.collection.update({ _id: someFooId }, { $set: { name: 'New Name' } });

但是,这也改变了 updatedAt 属性。

那么我如何更新文档, 不改变 updatedAt

最佳答案

我刚刚找到了一个解决方案,它对我来说非常有效。

mongoose.connection.db.collection('player').updateOne(
    {_id: mongoose.Types.ObjectId('56cb91sf34746f14678934ba')},
    {$set: {name: 'Test'}}
);

此查询不会更新 updatedAt 字段。希望你仍然需要这个!

关于node.js - 跳过 Mongoose 中某些更新的时间戳中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621790/

相关文章:

javascript - 如何在模式上覆盖 Mongoose findOne() 函数以进行测试?

node.js - 如何设置 RedisStore -- Node、Express、Socket.io、Heroku

node.js - 将社交登录(使用 Google 登录)添加到现有电子邮件/密码应用程序和数据库的最佳方法是什么?

node.js - 如何监控heroku(node.js)上的内存使用情况

java - MongoDB/Morphia 对多字段文档的更新操作

javascript - 在 MEAN 堆栈应用程序中从 mongodb 获取 "404 not found"

python - Python 列表推导式中的 Lambda 表达式

javascript - 使用 Mongoose 和 Node/ express 保存新帖子时遇到问题

javascript - 40 位整数在 JavaScript 中是否准确表示?

javascript - 将对象推送到数组,该数组是数组 Mongoose 中对象的字段