Explorer
MongoDB

Increase the price of all products in the `"Electronics"` category by `10`. Return all Electronics products sorted by price.

Problem Statement

<p>Increase the <code>price</code> of all <code>products</code> in the <code>"Electronics"</code> <code>category</code> by <code>10</code>. Return all Electronics <code>products</code> sorted by <code>price</code>.</p>

Examples

Input: products collection: +-----+----------+-------------+-------+ | _id | name | category | price | +-----+----------+-------------+-------+ | 1 | Mouse | Electronics | 25 | | 2 | Desk | Furniture | 150 | | 3 | Keyboard | Electronics | 75 | | 4 | Monitor | Electronics | 300 | +-----+----------+-------------+-------+

Output: +-----+----------+-------------+-------+ | _id | name | category | price | +-----+----------+-------------+-------+ | 1 | Mouse | Electronics | 35 | | 3 | Keyboard | Electronics | 85 | | 4 | Monitor | Electronics | 310 | +-----+----------+-------------+-------+

Explanation: The target document is modified according to the update operators and the updated document is returned.

Complexity

Time Complexity: -

Space Complexity: -

Hints

šŸ’” Hint 1: Filter documents where a field matches any value in a list using the $in or $nin operator. šŸ’” Hint 2: Pass the query object to db.<collection>.find({ field: { $in: [val1, val2, ...] } }). šŸ’” Hint 3: Call .toArray() on the returned cursor so the function returns the array of matching documents.

Editorial & Approach

Problem Overview & Intuition

To solve "Batch Price Increase", we query the MongoDB document store. The goal is to increase the price of all products in the `"electronics"` category by `10`. return all electronics products sorted by price. Using a targeted find query, the database engine filters and structures the BSON documents efficiently.

Step-by-Step Approach

  1. Identify Target Collection: Access the collection through the db instance.
  2. Construct Query / Pipeline: Build the query filter with appropriate comparison operators.
  3. Resolve Cursor: Invoke .toArray() to transform the query cursor into the required array of documents.

Optimal Implementation (MongoDB)

function solve(db) {
  db.products.updateMany({ category: "Electronics" }, { $inc: { price: 10 } });
  return db.products.find({ category: "Electronics" }).sort({ price: 1 }).toArray();
}

Complexity Analysis

Time Complexity O(N) collection scan (O(log N) if index is present on filtered fields).
Space Complexity O(K) where K is the number of returned documents in memory.

Key Considerations & Edge Cases

  • Empty Collections: If no documents match, the query cleanly returns an empty array [].
  • Missing / NULL Fields: Missing fields in documents are handled safely without throwing runtime exceptions.
  • Type Coercion: BSON types (ObjectId, Numbers, Strings) are compared strictly according to MongoDB specifications.

Batch Price Increase

Hard

Increase the price of all products in the "Electronics" category by 10. Return all Electronics products sorted by price.

Example Scenarios
1Example 1
Input:
products collection
_idnamecategoryprice
1MouseElectronics25
2DeskFurniture150
3KeyboardElectronics75
4MonitorElectronics300
Output:
_idnamecategoryprice
1MouseElectronics35
3KeyboardElectronics85
4MonitorElectronics310
Explanation:

The target document is modified according to the update operators and the updated document is returned.

MongoDB Editor
Loading Editor...
Query Results (JSON)

Run your MongoDB code to see results here.