- Indexes >
- Indexing Reference >
- GeoJSON Objects
GeoJSON Objects¶
On this page
Overview¶
MongoDB supports the GeoJSON object types listed on this page.
To specify GeoJSON data, use a document with a type field specifying the GeoJSON object type and a coordinates field specifying the object’s coordinates:
{ type: "<GeoJSON type>" , coordinates: <coordinates> }
Important
Always list coordinates in longitude, latitude order.
The default coordinate reference system for GeoJSON uses the WGS84 datum.
Point¶
New in version 2.4.
The following example specifies a GeoJSON Point:
{ type: "Point", coordinates: [ 40, 5 ] }
LineString¶
New in version 2.4.
The following example specifies a GeoJSON LineString:
{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }
Polygon¶
New in version 2.4.
Polygons consist of an array of GeoJSON LinearRing coordinate arrays. These LinearRings 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.
Polygons with a Single Ring¶
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.
Polygons with Multiple Rings¶
For Polygons with multiple rings:
- The first described ring must be the exterior ring.
- The exterior ring cannot self-intersect.
- Any interior ring must be entirely contained by the outer ring.
- Interior rings cannot intersect or overlap each other. Interior rings cannot share an edge.
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 ] ]
]
}
MultiPoint¶
New in version 2.6: Requires 2dsphere (Version 2)
GeoJSON MultiPoint <http://geojson.org/geojson-spec.html#multipoint> embedded 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 ]
]
}
MultiLineString¶
New in version 2.6: Requires 2dsphere (Version 2)
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 ] ]
]
}
MultiPolygon¶
New in version 2.6: Requires 2dsphere (Version 2)
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 ] ] ]
]
}
GeometryCollection¶
New in version 2.6: Requires 2dsphere (Version 2)
The following example stores coordinates of GeoJSON type GeometryCollection:
{
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 ] ]
]
}
]
}
Thank you for your feedback!
We're sorry! You can Report a Problem to help us improve this page.