GeoJSON Objects (original) (raw)

MongoDB supports the GeoJSON object types listed on this page.

To specify GeoJSON data, use an embedded document with:


<field>: { type: <GeoJSON type> , coordinates: <coordinates> }

Important

If specifying latitude and longitude coordinates, list thelongitude first, and then latitude.

MongoDB geospatial queries on GeoJSON objects calculate on a sphere; MongoDB uses the WGS84 reference system for geospatial queries on GeoJSON objects.

The following example specifies a GeoJSON Point:


{ type: "Point", coordinates: [ 40, 5 ] }

The following example specifies a GeoJSON LineString:


{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }

Polygons consist of an array of GeoJSON LinearRing coordinate arrays. TheseLinearRings are closed LineStrings. Closed LineStrings have at least four coordinate pairs and specify the same position as the first and last coordinates.

The line that joins two points on a curved surface may or may not contain the same set of co-ordinates that joins those two points on a flat surface. The line that joins two points on a curved surface will be a geodesic. Carefully check points to avoid errors with shared edges, as well as overlaps and other types of intersections.

The following example specifies a GeoJSON Polygon with an exterior ring and no interior rings (or holes). The first and last coordinates must match in order to close the polygon:


{

  type: "Polygon",

  coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0  ] ] ]

}

For Polygons with a single ring, the ring cannot self-intersect.

For Polygons with multiple rings:

The following example represents a GeoJSON polygon with an interior ring:


{

  type : "Polygon",

  coordinates : [

     [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ],

     [ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ]

  ]

}

Diagram of a Polygon with internal ring.

Requires 2dsphere Indexes

GeoJSON MultiPointembedded documents encode a list of points.


{

  type: "MultiPoint",

  coordinates: [

     [ -73.9580, 40.8003 ],

     [ -73.9498, 40.7968 ],

     [ -73.9737, 40.7648 ],

     [ -73.9814, 40.7681 ]

  ]

}

Requires 2dsphere Indexes

The following example specifies a GeoJSON MultiLineString:


{

  type: "MultiLineString",

  coordinates: [

     [ [ -73.96943, 40.78519 ], [ -73.96082, 40.78095 ] ],

     [ [ -73.96415, 40.79229 ], [ -73.95544, 40.78854 ] ],

     [ [ -73.97162, 40.78205 ], [ -73.96374, 40.77715 ] ],

     [ [ -73.97880, 40.77247 ], [ -73.97036, 40.76811 ] ]

  ]

}

Requires 2dsphere Indexes

The following example specifies a GeoJSON MultiPolygon:


{

  type: "MultiPolygon",

  coordinates: [

     [ [ [ -73.958, 40.8003 ], [ -73.9498, 40.7968 ], [ -73.9737, 40.7648 ], [ -73.9814, 40.7681 ], [ -73.958, 40.8003 ] ] ],

     [ [ [ -73.958, 40.8003 ], [ -73.9498, 40.7968 ], [ -73.9737, 40.7648 ], [ -73.958, 40.8003 ] ] ]

  ]

}

Requires 2dsphere Indexes

The following example stores coordinates of GeoJSON typeGeometryCollection:


{

  type: "GeometryCollection",

  geometries: [

     {

       type: "MultiPoint",

       coordinates: [

          [ -73.9580, 40.8003 ],

          [ -73.9498, 40.7968 ],

          [ -73.9737, 40.7648 ],

          [ -73.9814, 40.7681 ]

       ]

     },

     {

       type: "MultiLineString",

       coordinates: [

          [ [ -73.96943, 40.78519 ], [ -73.96082, 40.78095 ] ],

          [ [ -73.96415, 40.79229 ], [ -73.95544, 40.78854 ] ],

          [ [ -73.97162, 40.78205 ], [ -73.96374, 40.77715 ] ],

          [ [ -73.97880, 40.77247 ], [ -73.97036, 40.76811 ] ]

       ]

     }

  ]

}