deleteOne, deleteMany, and replaceOne—always preview filters with find first.
Delete
db.sessions.find({ expiresAt: { $lt: new Date() } }).limit(5)
db.sessions.deleteMany({ expiresAt: { $lt: new Date() } })Practice: Use practice database in mongosh.
Replace
db.products.replaceOne(
{ sku: 'A1' },
{ sku: 'A1', name: 'Widget v2', price: 11.99, tags: [] }
)Replace drops fields not listed—often prefer $set partial updates.
TTL index (preview)
db.sessions.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 })MongoDB deletes docs when expiresAt time passes—handy for sessions.
Important interview questions and answers
- Q: deleteMany empty filter?
A: Deletes entire collection—guard in shell and apps. - Q: replaceOne pitfall?
A: Accidentally removes fields not included in replacement doc.
Self-check
- Safe order before deleteMany?
- TTL index use case?
Tip: TTL indexes automate session cleanup—set expiresAt as Date.
Interview prep
- replaceOne risk?
- Drops fields not in replacement document.
- TTL index?
- Auto-deletes docs when date field passes.