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



我正试图在mongodb集合中创建一个2sphere索引。索引需要在location字段上,该字段采用GeoJSON格式:

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的返回代码。错误的GeoJSON数据会在插入时导致错误,允许您将这些项目标记为需要注意,但允许大多数项目使用索引支持进行插入。

最新更新