Home > front end >  Geospatial 2dsphere index not creating in MongoDB Atlas and manually
Geospatial 2dsphere index not creating in MongoDB Atlas and manually

Time:04-06

I am trying to create a 2sphere index in my mongodb collection. The index needs to be on location field which is at GeoJSON format:

location: {    
   coordinates: [lat, long],
   type: "Point" 
}

My manual query in JS:

db.collection(COLLECTION_NAME).createIndex({ "location": "2dsphere" });

When I create the index in Mongo Atlas, it appears and disappears after a few seconds on the screen.

An error is occuring when creating the index but I don't know what.

My $near query:

db.collection(COLLECTION_NAME)
      .find({
        location: {
          $near: {
            $geometry: { type: "Point", coordinates: [lng, lat] },
            $minDistance: 1000,
            $maxDistance: 5000,
          },
        },
      })

Error:

planner returned error :: caused by :: unable to find index for $geoNear query This error is because my index is not creating.

Hope people out there can help! :) Thanks a lot!

Documentation used: https://www.mongodb.com/docs/manual/reference/operator/query/near/

CodePudding user response:

GeoJSON coords are long,lat not lat,long. It is very likely that you have some bad data in your locationfield and this is preventing the index from being created correctly. To test, if you can, drop the data from the collection, create the 2dsphere index, then in a loop add the data back and watch the return code from insert. Bad GeoJSON data will cause an error on insert.

  • Related