geoSearch

On this page

  • geoSearch
    • The geoSearch command provides an interface to MongoDB’s haystack index functionality. These indexes are useful for returning results based on location coordinates after collecting results based on some other query (i.e. a “haystack.”)

The geoSearch command accepts a document that contains the following fields.

FieldTypeDescription
geoSearchstringThe collection to query.
searchdocumentQuery to filter documents.
neararrayCoordinates of a point.
maxDistancenumberOptional. Maximum distance from the specified point.
limitnumberOptional. Maximum number of documents to return.
readConcerndocumentOptional. Specifies the read concern.
The readConcern option has the following syntax:
Changed in version 3.6.
readConcern: { level: <value> }
Possible read concern levels are:
"local". This is the default read concern level.
"available". This is the default for reads against secondaries when Read Operations and Causally Consistent Sessions and “level” are unspecified. The query returns the instance’s most recent data.
"majority". Available for replica sets that use WiredTiger storage engine.
"linearizable". Available for read operations on the primary only.
For more formation on the read concern levels, see Read Concern Levels.
For "local" (default) or "majority" read concern level, you can specify the afterClusterTime option to have the read operation return data that meets the level requirement and the specified after cluster time requirement. For more information, see Read Operations and Causally Consistent Sessions.
For more information on the read concern levels, see Read Concern Levels.

Behavior

Unless specified otherwise, the geoSearch command limits results to 50 documents.

Important

geoSearch is not supported for sharded clusters.

Examples

Consider the following example:

db.runCommand({
   geoSearch : "places",
   near: [ -73.9667, 40.78 ],
   maxDistance : 6,
   search : { type : "restaurant" },
   limit : 30
})

The above command returns all documents with a type of restaurant having a maximum distance of 6 units from the coordinates [ -73.9667, 40.78 ] in the collection places up to a maximum of 30 results.

Override Default Read Concern

To override the default read concern level of "local", use the readConcern option.

The following operation on a replica set specifies a Read Concern of "majority" to read the most recent copy of the data confirmed as having been written to a majority of the nodes.

Note

Starting in MongoDB 3.6, support for read concern "majority" is enabled by default. For MongoDB 3.6.1 - 3.6.x, you can disable read concern "majority". For more information, see Disable Read Concern Majority.

  • Regardless of the read concern level, the most recent data on a node may not reflect the most recent version of the data in the system.
db.runCommand(
   {
      geoSearch: "places",
      near: [ -73.9667, 40.78 ],
      search : { type : "restaurant" },
      readConcern: { level: "majority" }
    }
)

To ensure that a single thread can read its own writes, use "majority" read concern and "majority" write concern against the primary of the replica set.