Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

mongodb
geospatial
python
communitycreator

What is the MongoDB geospatial command?

AKASH BAJWA

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

GeoSpatial Command is implemented through an interface named geoSearch. It performs a geospatial query that uses MongoDB’s haystack index functionality.

In the latest version, MongoDB 5.0, deprecated geoSearch command and geoHaystack index are no longer available. Use a 2d index with $geoNear instead, or use geospatial query operators.

What is haystack index?

Haystack index increases search by generating buckets of objects collected by a second criterion. The geoSearch command is loaded with an interface used by MongoDB’s haystack index functionality.

It gives location-based results after collecting results based on multiple fields in geoSearch documents, like coordinates and other queries (i.e., a haystack).

Syntax


db.runCommand({
 geoSearch : "ABC",
 near: [x, y].
 maxDistance: length,
 search: {type :  "name" },
 readConcern: { level: "default"},
 limit: no_of_documents})

Fields in geoSearch document

Here listed some fields that a geoSearch document contains:

GeoSearch Command Document Fields

Attributes

Genre

Description Description

Geosearch

string

Name of the collection on which the geoSearch is performed.

Search

document

Query which is used to filter the document.

Near

array

It is the coordinates of a point where the geoSearch is performed.

maxDistance

number

The maximum distance to where the search is performed from the Specified point.

Limit

number

The highest number of documents to return.

comment

any

User provided comment

readConcern

document

Read concern can be done using this syntax:

read Concern: {level: <value>}

Possible levels of read-concern are:

  • "local"
  • "snapshot"
  • "available"
  • "majority"
  • "linearizable"

Overriding default readConcern

The readConcern field default value can be override.

To override, you can use these possible levels of read-concern:

  • "local"
  • "shanpnshot"
  • "majority",
  • "linearrizable", etc.

This demo code contains an updated readConcern value to highest as below:


db.runCommand({
geoSearch: "places",
near: [ -73.9667, 40.78],
search: {type : "School" ),
readConcern: {level: "highest"}})

Example

The following commands give all the documents with a type 'School' having the highest distance of 10 units from points [ -63.4809, 41.89765] in the collection education to show a maximum of 30 results:

import mongoDB as db
# MongoDB GeoSearch Command
db.rumCommand({geoSearch: "education",
near: [-63.4809, 41.89765],
maxDistance: 10,
search: {type:: "School" },
limit: 30})

RELATED TAGS

mongodb
geospatial
python
communitycreator

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Keep Exploring