MongoDB变更流监听
使用变更流实时追踪数据库中的数据变化。 · 难度:入门 · +15XP
变更流 (Change Streams)
变更流允许应用订阅数据库的实时变化事件(插入、更新、删除、替换)。基于 oplog 实现,从 MongoDB 3.6 开始支持。
使用场景
- 实时通知系统
- 数据同步到缓存或搜索引擎
- 审计日志
API 基础
const changeStream = collection.watch([], { fullDocument: 'updateLookup' });
changeStream.on('change', (next) => {
console.log('变更类型:', next.operationType);
console.log('文档:', next.fullDocument);
});示例:监听用户集合
const { MongoClient } = require('mongodb');
async function watchChanges() {
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
const db = client.db('test');
const users = db.collection('users');
const changeStream = users.watch([], { fullDocument: 'updateLookup' });
changeStream.on('change', (change) => {
if (change.operationType === 'insert') {
console.log('新用户:', change.fullDocument);
} else if (change.operationType === 'update') {
console.log('用户更新:', change.updateDescription);
}
});
// 保持连接
setTimeout(() => changeStream.close(), 60000);
}
watchChanges().catch(console.error);表格:事件类型
| operationType | 触发操作 |
|---|---|
| insert | 插入文档 |
| update | 更新文档 |
| delete | 删除文档 |
| replace | 替换文档 |
练习提示: 启动变更流监听,在另一个终端插入数据,观察事件输出。尝试过滤特定操作类型。