在Mongoose/MongoDB中存储文档的历史记录可以通过使用Mongoose插件或MongoDB的Change Streams来实现。
mongoose-history
插件来实现文档历史记录的存储。 安装mongoose-history
插件:
npm install mongoose-history
在定义Mongoose模型时,将mongoose-history
插件添加到模型的插件列表中:
const mongoose = require('mongoose');
const historyPlugin = require('mongoose-history');
const schema = new mongoose.Schema({
// 定义模型的字段
});
schema.plugin(historyPlugin);
const Model = mongoose.model('Model', schema);
这样,每次对模型进行更新操作时,mongoose-history
插件会自动将旧版本的文档存储在一个名为modelName_history
的集合中。
首先,创建Change Stream:
const { MongoClient } = require('mongodb');
async function createChangeStream() {
const client = await MongoClient.connect('mongodb://localhost:27017');
const db = client.db('yourDatabase');
const collection = db.collection('yourCollection');
const changeStream = collection.watch();
changeStream.on('change', (change) => {
// 处理文档变化的逻辑
});
}
createChangeStream();
在changeStream.on('change', ...)
回调函数中,可以处理文档变化的逻辑,例如将变化的文档存储到另一个集合中作为历史记录。
以上是在Mongoose/MongoDB中存储文档历史记录的两种方法。根据具体的业务需求和开发环境,选择适合的方法来实现文档历史记录的存储。
领取专属 10元无门槛券
手把手带您无忧上云