Explorer
MongoDB

Find all products that are either in `"Electronics"` category with price over `500`, OR in `"Books"` category.

Problem Statement

<p>Find all <code>products</code> that are either in <code>"Electronics"</code> <code>category</code> with <code>price</code> over <code>500</code>, OR in <code>"<code>Books</code>"</code> <code>category</code>.</p>

Examples

Input: products collection: +-----+--------+-------------+-------+ | _id | name | category | price | +-----+--------+-------------+-------+ | 1 | Laptop | Electronics | 999 | | 2 | Mouse | Electronics | 25 | | 3 | Novel | Books | 15 | | 4 | Tablet | Electronics | 499 | +-----+--------+-------------+-------+

Output: +-----+--------+-------------+-------+ | _id | name | category | price | +-----+--------+-------------+-------+ | 1 | Laptop | Electronics | 999 | | 3 | Novel | Books | 15 | +-----+--------+-------------+-------+

Explanation: The query retrieves all documents from the collection that satisfy the specified filter criteria.

Complexity

Time Complexity: -

Space Complexity: -

Hints

šŸ’” Hint 1: Use comparison operators ($gt, $gte, $lt, $lte) to filter documents based on numeric or date ranges. šŸ’” Hint 2: Construct the filter condition: { fieldName: { $gt: value } } inside db.<collection>.find(...). šŸ’” Hint 3: Chain projection or sorting if requested, and invoke .toArray() to produce the result array.

Editorial & Approach

Problem Overview & Intuition

To solve "Complex OR with Nested Conditions", we query the MongoDB document store. The goal is to find all products that are either in `"electronics"` category with price over `500`, or in `"books"` category. 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) {
  return db.products.find({ $or: [{ category: "Electronics", price: { $gt: 500 } }, { category: "Books" }] }).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.

Complex OR with Nested Conditions

Medium

Find all products that are either in "Electronics" category with price over 500, OR in "Books" category.

Example Scenarios
1Example 1
Input:
products collection
_idnamecategoryprice
1LaptopElectronics999
2MouseElectronics25
3NovelBooks15
4TabletElectronics499
Output:
_idnamecategoryprice
1LaptopElectronics999
3NovelBooks15
Explanation:

The query retrieves all documents from the collection that satisfy the specified filter criteria.

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

Run your MongoDB code to see results here.