Intermediate LevelMongoDB & Mongoose
What is the difference between $out and $merge aggregation stages?
❓ Interview Prompt: Compare $out (overwrites entire target collection) vs $merge (fine-grained atomic updates/upserts).
Both '$out' and '$merge' write aggregation results to target collections:
•
'$out': Completely replaces the target collection (drops old collection and replaces it with output results).
•
'$merge': Performs fine-grained upsert/merge operations into an existing collection without dropping un-matched data!
Code Implementation Example
typescript
import { OrderModel } from './models/Order';
async function exportArchiveCollection() {
// Completely overwrites 'archived_orders' collection
await OrderModel.aggregate([
{ $match: { status: 'ARCHIVED' } },
{ $out: 'archived_orders' }
]);
}💡Replacing target collection contents using the $out aggregation stage.
🎯 Interview Key Takeaway
Use $out when completely overwriting a target collection; use $merge for incremental upserts.
#$out#$merge#Aggregation#Intermediate
Back to all MongoDB & Mongoose Questions→