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

时间:2015-10-23 08:26:07

标签: mongodb geojson spatial-query

我在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获得结果。

使用$ 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
} 

这意味着它找不到任何附近的东西(假)。有许多类似的主题,但我已经尝试了那里提出的,没有任何工作。

1 个答案:

答案 0 :(得分:0)

您在索引创建和查询中遇到错误:

根据你的json架构,没有loc,而是有 " geography.loc"

即。

IFormValidator.validate()

应该是

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