⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

事务内动态创建 TTL 索引实现延迟删除队列

结合 MongoDB 4.0 多文档事务与 TTL 索引,设计一个安全的延迟删除机制 · 难度:入门 · +10XP

事务内动态创建 TTL 索引实现延迟删除队列

TTL 索引通常用于过期数据自动清理,但很少与事务结合。本教程带你实现在一个事务中:当用户取消订单时,写入一条‘延迟删除记录’到专用集合,同时动态创建带有 expireAfterSeconds 的索引,让 MongoDB 在指定时间后自动物理删除该记录。利用事务保证‘写入记录 + 创建索引’的原子性,避免垃圾数据存留。此模式适合软删除后需延迟物理清除的场景。

const session = client.startSession();
session.startTransaction();
try {
  const deleteQueue = db.collection('delete_queue');
  await deleteQueue.insertOne({ orderId: 123, createAt: new Date() }, { session });
  await deleteQueue.createIndex({ createAt: 1 }, {
    expireAfterSeconds: 3600,
    session
  });
  await session.commitTransaction();
} catch (err) {
  await session.abortTransaction();
}
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 83 篇
0 完成
🔥 0