MongoDB 空间查询 - 错误无法找到索引或没有结果

MongoDB spatial query - error unable to find index or no results

我在 MongoDb 中执行一些空间查询时遇到问题。我有一个集合 "cities15000",其中每条记录都具有这种格式

"_id" : ObjectId("5624aefe4728347a51b1d751"),
"geonameid" : "292932",
"name" : "Ajman",
"asciiname" : "Ajman",
"latitude" : "25.41111",
"longitude" : "55.43504",
"feature_code" : "PPLA",
"country_code" : "AE",
"population" : "226172",
"elevation" : "",
"timezone" : "Asia/Dubai",
"geography" : {
    "type" : "Point",
    "loc" : [ 
        "55.43504", 
        "25.41111"
    ]
} 

我创建了一个 2dsphere 索引 db.cities15000.ensureIndex({loc : '2dsphere'}) 然后我尝试使用 $near$geonear.

获取结果

在使用 $near db.cities15000.find({loc: {$near: [55.400 ,25.400]} }) 时,我收到此错误消息

Unable to execute query: error processing query...n planner returned error: unable to find index for $geoNear query"

这意味着我的索引有误(我认为)。

但是当我使用 db.runCommand({geoNear: "cities15000",near: { type: "Point", coordinates: [ 55.400 ,25.400 ] },spherical: true}) 我得到:

{
"results" : [],
"stats" : {
    "nscanned" : 0,
    "objectsLoaded" : 0,
    "avgDistance" : NaN,
    "maxDistance" : 0.0000000000000000,
    "time" : 0
},
"ok" : 1.0000000000000000
} 

这意味着它在 (false) 附近找不到任何东西。有很多类似的话题,但我已经尝试了那里提出的建议,但没有任何效果。

您在创建索引和查询时出错:

根据您的 json 模式,没有 loc 而是有 "geography.loc"

db.cities15000.find({loc: {$near: [55.400 ,25.400]} })

应该是这样的

db.cities15000.find({"geography.loc": {$near: [55.400 ,25.400]} })