時間:2024-03-26 14:35作者:下載吧人氣:25
MongoDB被譽為NoSQL中的明星,它是一種面向文檔的數據庫,由于它使得分布式數據訪問和存儲變得更加方便,而且在效率、動力學和容量方面也做得非常好,所以日益受到關注。
在MongoDB中插入記錄時,經常需要記錄當前時間戳,以防止歷史數據被修改,并可以快速查看哪些數據進行了更新,以便審核和維護等。
有幾種方法可以很方便地添加或更新當前時間戳,其中最常用的方式是使用Mongoose的虛擬字段(virtuals)。
假設需要在Mongoose模式中記錄createdAt和updatedAt的當前時間戳:
const UserSchema = new mongoose.Schema({
name: String, age: Number
}, { timestamps: true }
);
使用這種方法,只要啟用timestamps字段,它就會自動將更新和創建時間添加到模式中,并且每次更新時都會更新updatedAt字段。
另一種方法是使用Mongoose中的getters/setters,getters/setters允許在操作數據前后執行操作,所以可以在更新或查詢操作時記錄當前時間。
const UserSchema = new mongoose.Schema({
name: String, age: Number
}, { timestamps: true }
);
UserSchema.pre('save', function (next) { let now = new Date();
this.updatedAt = now;
// 設置 createdAt 和 updatedAt 只有在創建時 if (! this.createdAt) {
this.createdAt = now; }
});
最后,它也可以使用MongoDB自定義操作符記錄當前時間:
var now = new Date();
var updateDoc = { $currentDate: {
createdAt: true, updatedAt: now
}};
User.update({}, updateDoc, { multi: true }).exec();
總之,MongoDB有多種方法可以添加或更新當前時間,可以通過virtuals、getters/setters和MongoDB自帶的操作等來實現。任何一種方法都可以使我們的應用程序更智能,使得時刻掌握數據更新情況變得十分容易。
網友評論