Database
NoSQL
MongoDB
Operators
Geospatial Query Operators

Geospatial Query Operators in MongoDB

Introduction

MongoDB provides robust support for geospatial queries, allowing you to work with geographic data and perform operations like proximity searches, distance calculations, and more. Geospatial Query Operators are designed to handle data with geographic coordinates and enable efficient querying of spatial data.

$geoWithin Operator

Description:
The $geoWithin operator finds documents with geospatial data that fall within a specified shape or area. This operator is useful for querying data within geographic boundaries such as polygons or circles.

db.places.find({
  location: {
    $geoWithin: {
      $centerSphere: [[-74.0060, 40.7128], 5000 / 6378100]
    }
  }
});

$geoIntersects Operator

Description:
The $geoIntersects operator finds documents where the geospatial data intersects with a specified shape. This operator is useful for querying documents that intersect with geometric shapes like polygons or lines.

db.places.find({
  location: {
    $geoIntersects: {
      $geometry: {
        type: "Polygon",
        coordinates: [
          [
            [-74.1, 40.7],
            [-74.1, 40.8],
            [-74.0, 40.8],
            [-74.0, 40.7],
            [-74.1, 40.7]
          ]
        ]
      }
    }
  }
});

$near Operator

Description:
The $near operator finds documents with geospatial data that are nearest to a specified point. This operator is useful for proximity searches, such as finding the nearest places or points of interest.

db.places.find({
  location: {
    $near: {
      $geometry: {
        type: "Point",
        coordinates: [-74.0060, 40.7128]
      },
      $maxDistance: 5000
    }
  }
});

$nearSphere Operator

Description:
The $nearSphere operator is similar to $near, but it calculates distances on a spherical surface, which is more accurate for geographic coordinates.

db.places.find({
  location: {
    $nearSphere: {
      $geometry: {
        type: "Point",
        coordinates: [-74.0060, 40.7128]
      },
      $maxDistance: 5000
    }
  }
});

$box Operator

Description:
The $box operator is used to specify a rectangular area for querying. It finds documents within a bounding box defined by two corner points.

db.places.find({
  location: {
    $geoWithin: {
      $box: [
        [-74.1, 40.7],
        [-74.0, 40.8]
      ]
    }
  }
});

$polygon Operator

Description:
The $polygon operator allows you to define a polygon for querying. Documents within the specified polygon are matched by the query.

db.places.find({
  location: {
    $geoWithin: {
      $polygon: [
        [-74.1, 40.7],
        [-74.1, 40.8],
        [-74.0, 40.8],
        [-74.0, 40.7]
      ]
    }
  }
});

Conclusion

MongoDB’s Geospatial Query Operators provide powerful tools for querying geographic data. The $geoWithin and $geoIntersects operators help in working with shapes and areas, while $near and $nearSphere are used for proximity searches. The $box and $polygon operators allow for defining specific rectangular or polygonal areas for querying. Leveraging these operators effectively enables you to perform complex geospatial queries and analyses within MongoDB.