Bird
Raised Fist0
MongoDBquery~20 mins

Geospatial queries basics in MongoDB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Geospatial Query Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Find documents within a circle
Given a MongoDB collection places with documents containing a location field as GeoJSON points, what will be the output of this query?

db.places.find({ location: { $geoWithin: { $centerSphere: [[-73.97, 40.77], 0.0001] } } })

The query finds documents within a circle centered at longitude -73.97, latitude 40.77 with radius 0.0001 radians.
ADocuments with locations roughly within 637 meters of the point (-73.97, 40.77)
BDocuments with locations exactly at (-73.97, 40.77) only
CDocuments with locations within 0.01 degrees of the point (-73.97, 40.77)
DDocuments with locations anywhere in the collection
Attempts:
2 left
πŸ’‘ Hint
Remember that $centerSphere uses radians for radius, not degrees or meters.
🧠 Conceptual
intermediate
1:30remaining
Understanding 2dsphere index usage
Which statement about MongoDB's 2dsphere index is correct?
AIt is used only for legacy coordinate pairs, not GeoJSON.
BIt automatically converts all coordinates to degrees before indexing.
CIt supports queries on GeoJSON objects and calculates distances on a spherical surface.
DIt only supports flat 2D plane calculations and cannot handle GeoJSON points.
Attempts:
2 left
πŸ’‘ Hint
Think about how Earth’s curvature affects distance calculations.
πŸ“ Syntax
advanced
2:00remaining
Identify the syntax error in a geospatial query
Which option contains a syntax error in the MongoDB geospatial query?
MongoDB
db.places.find({ location: { $near: { $geometry: { type: "Point", coordinates: [-73.97, 40.77] }, $maxDistance: 1000 } } })
Adb.places.find({ location: { $near: { $geometry: { type: "Point", coordinates: [-73.97, 40.77] }, maxDistance: 1000 } } })
Bdb.places.find({ location: { $near: { $geometry: { type: "Point", coordinates: [-73.97, 40.77] }, $maxDistance: 1000 } } })
Cdb.places.find({ location: { $near: { $geometry: { type: "Point", coordinates: [40.77, -73.97] }, $maxDistance: 1000 } } })
Ddb.places.find({ location: { $nearSphere: { $geometry: { type: "Point", coordinates: [-73.97, 40.77] }, $maxDistance: 1000 } } })
Attempts:
2 left
πŸ’‘ Hint
Check the spelling and syntax of the distance option inside $near.
❓ optimization
advanced
1:30remaining
Optimizing geospatial queries with indexes
You have a collection restaurants with a location field storing GeoJSON points. Which index will optimize queries that find restaurants near a given point?
A{ location: "2d" }
B{ location: "2dsphere" }
C{ location: "hashed" }
D{ location: 1 }
Attempts:
2 left
πŸ’‘ Hint
Consider the type of geospatial data stored and the query type.
πŸ”§ Debug
expert
2:30remaining
Why does this geospatial query return no results?
You run this query on a MongoDB collection parks with a location field indexed as 2dsphere:

db.parks.find({ location: { $geoWithin: { $box: [[-74, 40], [-73, 41]] } } })

But it returns no documents, even though you know some parks are inside that box. What is the most likely reason?
AThe $geoWithin operator requires $centerSphere, not $box.
BThe coordinates in $box are reversed; longitude and latitude are swapped.
CThe collection does not have any documents with location fields.
DThe $box operator only works with 2d indexes, not 2dsphere indexes.
Attempts:
2 left
πŸ’‘ Hint
Check compatibility of operators with index types.

Practice

(1/5)
1. What does the $near operator do in MongoDB geospatial queries?
easy
A. Finds documents with locations closest to a specified point
B. Deletes documents within a certain distance
C. Updates documents with new coordinates
D. Sorts documents alphabetically by location name

Solution

  1. Step 1: Understand the purpose of $near

    The $near operator is used to find documents that are geographically close to a given point.
  2. Step 2: Compare options with $near functionality

    Only Finds documents with locations closest to a specified point correctly describes finding documents near a location. Other options describe unrelated actions.
  3. Final Answer:

    Finds documents with locations closest to a specified point -> Option A
  4. Quick Check:

    $near = Finds nearby points [OK]
Hint: Remember: $near finds closest points to a location [OK]
Common Mistakes:
  • Thinking $near deletes or updates documents
  • Confusing $near with sorting operators
  • Assuming $near works without a geospatial index
2. Which of the following is the correct syntax to find documents near a point using $near in MongoDB?
easy
A. { location: { $near: { $geometry: { type: 'Point', coordinates: [-70, 40] } } } }
B. { location: { $near: { $geometry: { type: 'Point', coordinates: [40, -70] } } } }
C. { location: { $near: { $geometry: { type: 'Point', coordinates: [70, 40] } } } }
D. { location: { $near: { $geometry: { type: 'Point', coordinates: [-40, 70] } } } }

Solution

  1. Step 1: Recall coordinate order in MongoDB

    Coordinates must be in [longitude, latitude] order, so longitude comes first.
  2. Step 2: Check each option's coordinate order

    { location: { $near: { $geometry: { type: 'Point', coordinates: [-70, 40] } } } } uses [-70, 40], which is [longitude, latitude]. Others have latitude first or wrong signs.
  3. Final Answer:

    { location: { $near: { $geometry: { type: 'Point', coordinates: [-70, 40] } } } } -> Option A
  4. Quick Check:

    Coordinates = [longitude, latitude] [OK]
Hint: Coordinates always [longitude, latitude] in MongoDB [OK]
Common Mistakes:
  • Swapping latitude and longitude order
  • Using positive latitude as longitude
  • Forgetting to use $geometry inside $near
3. Given a collection with a 2dsphere index on location, what will this query return?
{ location: { $near: { $geometry: { type: 'Point', coordinates: [-73.97, 40.77] }, $maxDistance: 500 } } }
medium
A. All documents regardless of location
B. Documents with locations within 500 meters of [-73.97, 40.77]
C. Documents with locations more than 500 meters away
D. Documents with locations exactly at [-73.97, 40.77]

Solution

  1. Step 1: Understand $near with $maxDistance

    The query finds documents near the point within the maximum distance specified (500 meters).
  2. Step 2: Interpret the query result

    It returns documents whose location is within 500 meters of the given coordinates, not exactly at or beyond that distance.
  3. Final Answer:

    Documents with locations within 500 meters of [-73.97, 40.77] -> Option B
  4. Quick Check:

    $near + $maxDistance = nearby points within distance [OK]
Hint: Use $maxDistance to limit how far results can be [OK]
Common Mistakes:
  • Thinking $maxDistance means exact match
  • Assuming it returns points beyond maxDistance
  • Ignoring the need for a 2dsphere index
4. You run this query but get an error:
{ location: { $near: { $geometry: { type: 'Point', coordinates: [40.77, -73.97] } } } }

What is the most likely cause?
medium
A. Coordinates are in wrong order; should be [longitude, latitude]
B. Missing $maxDistance parameter
C. The location field is not indexed with 2dsphere
D. The type should be 'Polygon' instead of 'Point'

Solution

  1. Step 1: Requirements for $near with $geometry

    The $near operator with $geometry requires a 2dsphere index on the location field.
  2. Step 2: Identify the most likely error cause

    Without a 2dsphere index, MongoDB throws an error for geospatial queries like $near. Coordinate order affects results but does not cause an error.
  3. Final Answer:

    The location field is not indexed with 2dsphere -> Option C
  4. Quick Check:

    $near requires 2dsphere index [OK]
Hint: Always put longitude before latitude in coordinates [OK]
Common Mistakes:
  • Swapping latitude and longitude
  • Assuming $maxDistance is required
  • Confusing geometry types
5. You want to find all restaurants within 1 km of a user's location stored as { type: 'Point', coordinates: [-122.42, 37.77] }. Which query correctly finds these restaurants assuming a 2dsphere index on location?
hard
A. { location: { $near: { $geometry: { type: 'Point', coordinates: [-122.42, 37.77] }, $minDistance: 1000 } } }
B. { location: { $geoWithin: { $centerSphere: [[-122.42, 37.77], 1] } } }
C. { location: { $nearSphere: { $geometry: { type: 'Point', coordinates: [37.77, -122.42] }, $maxDistance: 1000 } } }
D. { location: { $near: { $geometry: { type: 'Point', coordinates: [-122.42, 37.77] }, $maxDistance: 1000 } } }

Solution

  1. Step 1: Identify correct coordinate order and operator

    Coordinates must be [longitude, latitude], so [-122.42, 37.77] is correct. The $near operator with $maxDistance finds points within distance.
  2. Step 2: Evaluate each option

    { location: { $near: { $geometry: { type: 'Point', coordinates: [-122.42, 37.77] }, $maxDistance: 1000 } } } uses correct coordinates and $near with $maxDistance 1000 meters (1 km). { location: { $geoWithin: { $centerSphere: [[-122.42, 37.77], 1] } } } uses $geoWithin with radius in radians, not meters. { location: { $nearSphere: { $geometry: { type: 'Point', coordinates: [37.77, -122.42] }, $maxDistance: 1000 } } } swaps coordinates. { location: { $near: { $geometry: { type: 'Point', coordinates: [-122.42, 37.77] }, $minDistance: 1000 } } } uses $minDistance which finds points farther than 1 km, not within.
  3. Final Answer:

    { location: { $near: { $geometry: { type: 'Point', coordinates: [-122.42, 37.77] }, $maxDistance: 1000 } } } -> Option D
  4. Quick Check:

    $near + $maxDistance + correct coords = find nearby points [OK]
Hint: Use $near with $maxDistance and correct coords for nearby search [OK]
Common Mistakes:
  • Swapping latitude and longitude
  • Using $minDistance instead of $maxDistance
  • Confusing meters with radians in $geoWithin
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard