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]} })
我在 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]} })