Document storage, aggregation, and query patterns.
insertOne / insertManydb.users.insertMany([{name:'Alice'},{name:'Bob'}], {ordered:false});findOne / find().toArray()const user = await db.users.findOne({email:'a@b.com'}, {projection:{password:0}});Query operators: $eq $gt $indb.orders.find({status:{$in:['pending','processing']}, total:{$gt:100}});Logical: $and $or $not $nordb.products.find({$or:[{stock:0},{$and:[{price:{$gt:100}},{sale:true}]}]});Projectiondb.users.find({},{name:1, email:1, _id:0}); // only name and emailsort / limit / skipdb.posts.find().sort({createdAt:-1}).skip(20).limit(10);$elemMatchdb.courses.find({grades:{$elemMatch:{score:{$gte:90},subject:'Math'}}});deleteOne / deleteManyconst {deletedCount} = await db.sessions.deleteMany({expiresAt:{$lt:new Date()}});$set / $unsetdb.users.updateOne({_id}, {$set:{name:'Bob',$unset:{tempCode:''}}, $currentDate:{updatedAt:true}});$inc / $muldb.products.updateOne({_id}, {$inc:{stock:-quantity,$mul:{price:1.1}}});$push / $addToSetdb.post.updateOne({_id}, {$addToSet:{tags:{$each:['nodejs','api']}}});$pull / $popdb.cart.updateOne({_id}, {$pull:{items:{productId:{$in:removedIds}}}});$ positional / $[] / $[filter]db.orders.updateOne({_id,items.product:pid},{$set:{'items.$.qty':newQty}});upsert: truedb.stats.updateOne({date:today},{$inc:{views:1},$setOnInsert:{createdAt:new Date()}},{upsert:true});findOneAndUpdateconst updated = await db.jobs.findOneAndUpdate({status:'queued'},{$set:{status:'processing',startedAt:new Date()}},{sort:{priority:-1},returnDocument:'after'});$match (filter stages){ $match: { status: 'active', createdAt: { $gte: ISODate('2024-01-01') } } }$group with accumulators{ $group: { _id: '$category', total: { $sum: '$amount' }, avg: { $avg: '$rating' } } }$lookup (JOIN){ $lookup: { from: 'products', localField: 'productId', foreignField: '_id', as: 'product' } }$unwind{ $unwind: { path: '$tags', preserveNullAndEmptyArrays: true } }$project / $addFields{ $addFields: { fullName: { $concat: ['$firstName', ' ', '$lastName'] }, age: { $dateDiff: { startDate: '$dob', endDate: '$$NOW', unit: 'year' } } } }$facet (multi-aggregation){ $facet: { data: [{$skip:skip},{$limit:20}], total: [{$count:'n'}], categories: [{$group:{_id:'$cat'}}] } }$bucket / $bucketAuto{ $bucketAuto: { groupBy: '$price', buckets: 5, output: { count: { $sum: 1 }, avg: { $avg: '$price' } } } }createIndex({field:1})db.users.createIndex({email:1},{unique:true,sparse:true});Compound indexesdb.logs.createIndex({userId:1,level:1,createdAt:-1}); // ESR ruleText index / $textdb.articles.createIndex({title:'text',body:'text'}); db.articles.find({$text:{$search:'mongodb aggregation'}},{score:{$meta:'textScore'}});TTL index (expireAfterSeconds)db.sessions.createIndex({createdAt:1},{expireAfterSeconds:86400});explain("executionStats")db.users.find({email:'x@y.com'}).explain('executionStats');Transactions (multi-doc)const session = client.startSession(); session.withTransaction(async () => { await col1.updateOne({},{$inc:{val:1}},{session}); await col2.insertOne({log:'done'},{session}); });