地理空间 2dsphere 索引未在 MongoDB Atlas 中手动创建

Geospatial 2dsphere index not creating in MongoDB Atlas and manually

我正在尝试在我的 mongodb collection 中创建一个 2sphere 索引。索引需要在 GeoJSON 格式的 location 字段上:

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

我在 JS 中手动查询:

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

当我在 Mongo Atlas 中创建索引时,它在屏幕上出现并在几秒钟后消失。

创建索引时出错,但我不知道是什么。

我的$near查询:

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

错误:

planner returned error :: caused by :: unable to find index for $geoNear query 这个错误是因为我的索引没有创建。

希望那里的人能帮忙! :) 非常感谢!

使用的文档:https://www.mongodb.com/docs/manual/reference/operator/query/near/

GeoJSON 坐标是 long,lat 而不是 lat,long。您的 location 字段中很可能有一些错误数据,这会阻止正确创建索引。如果 1000 个文档中的一个文档有错误的地理数据,则不会创建索引。要进行测试,如果可以的话,从集合中删除数据,创建 2dsphere 索引,然后循环添加数据并观察 insert 中的 return 代码。错误的 GeoJSON 数据将导致插入错误,允许您将这些项目标记为需要注意,但允许大多数插入索引支持。