MERN_Stack_QA_Compiled (1)
MERN_Stack_QA_Compiled (1)
b. Borrowed by Member:
db.books.aggregate([
{ $match: { borrower_id: { $exists: true } } },
{ $group: { _id: "$borrower_id", borrowedCount: { $sum: 1 } } }
]);
c. Active Members:
db.members.countDocuments({ isActive: true });
d. Books by Category:
db.books.aggregate([
{ $match: { borrower_id: { $exists: true } } },
{ $group: { _id: "$category", count: { $sum: 1 } } }
]);
8. Recipe-Sharing System
Schema:
db.recipes.insertMany([
{ title: 'Pasta', ingredients: ['noodles', 'sauce'], user: 'alice', bookmarks: [] },
{ title: 'Pizza', ingredients: ['dough', 'cheese'], user: 'bob', bookmarks: [] },
{ title: 'Salad', ingredients: ['lettuce', 'tomato'], user: 'carol', bookmarks: [] },
{ title: 'Soup', ingredients: ['water', 'vegetables'], user: 'dave', bookmarks: [] },
{ title: 'Cake', ingredients: ['flour', 'sugar'], user: 'eve', bookmarks: [] }
]);
Bookmark Recipe:
db.recipes.updateOne({ title: 'Pasta' }, { $push: { bookmarks: 'user123' } });
Insert Document:
db.documents.insertOne({ title: 'Notes', user_id: ObjectId('...'), rating: 5 });
Update Rating:
db.documents.updateOne({ title: 'Notes' }, { $set: { rating: 4 } });
Add Patient:
db.patients.insertOne({ name: 'Jane Doe', age: 30 });
Other Strategies:
- Compound Index: db.products.createIndex({ category: 1, price: -1 })
- Text Index for search: db.products.createIndex({ name: "text", description: "text" })
- Covered Queries: Ensure index covers all queried fields
- Analyze with explain(): db.products.find({ category: 'Books' }).explain()
Update Query:
db.users.updateOne(
{ _id: ObjectId("user_id") },
{ $push: { "house.rooms": { name: "Room 44", size: "50" } } }
);
Reference: Conceptually related to Pages 311-317; auth logic must be implemented manually
return (
<form onSubmit={e => { e.preventDefault(); applyFilters(); }}>
<input type='text' placeholder='Location' onChange={e => setLocation(e.target.value)} />
<input type='text' placeholder='Job Type' onChange={e => setJobType(e.target.value)} />
<input type='number' placeholder='Salary' onChange={e => setSalary(e.target.value)} />
<button type='submit'>Apply</button>
</form>
);
}