我的应用程序使用 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/