Soft Delete का Pattern
एक soft delete एक document को remove करने की बजाय deleted mark करता है, ताकि इसे restore या audit किया जा सके।
In this page:
Syntax
db.collection_name.updateOne(filter, { $set: { deletedAt: new Date() } })
db.collection_name.find({ deletedAt: { $exists: false } })
Soft Delete Pattern
एक deleted flag या deletedAt date add करें और इसे normal queries से filter out करें। बाद में old soft-deleted data purge करने के लिए एक partial index या TTL index consider करें। इसकी storage cost है और हर query में एक filter add करता है, इसलिए जब history या undo matter करे तो इसे इस्तेमाल करें।
Note:
deleted filter को एक helper में wrap करें ताकि queries इसे कभी न भूलें।
उदाहरण: Soft delete pattern
test> db.users.insertMany([{ _id: 1, name: "Ada", deletedAt: null }, { _id: 2, name: "Bob", deletedAt: null }])
{ acknowledged: true, insertedIds: { '0': 1, '1': 2 } }
test> db.users.updateOne({ _id: 2 }, { $set: { deletedAt: ISODate("2024-03-01T00:00:00Z") } })
{ acknowledged: true, matchedCount: 1, modifiedCount: 1 }
test> db.users.find({ deletedAt: null }, { name: 1, _id: 0 })
[ { name: 'Ada' } ]
test> db.users.updateOne({ _id: 2 }, { $set: { deletedAt: null } })
{ acknowledged: true, matchedCount: 1, modifiedCount: 1 }
test> db.users.countDocuments({ deletedAt: null })
2
⚠️ Run this in your own terminal or Node.js environment.
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the
view already swaps in the hi_ translation fields (or blanks these
out if untranslated), so this renders correctly for both languages
without a lang_code check here. #}
आम गलतियां
- deleted documents filter करना भूल जाना
- soft-deleted personal data हमेशा के लिए रखना
- deleted duplicates से clash करने वाले Unique indexes
चैप्टर सारांश
- एक flag या date से deleted mark करें
- इन्हें queries से filter out करें
- Restore और audit allow करता है
- TTL या jobs से old वाले purge करें
🔒
Chapter Quiz — Complete all 6 topics to unlock
0/6 topics done
Complete these topics first: