Mongodb 2dsphere索引查询返回所有文档

Mongodb 2dsphere索引查询返回所有文档,mongodb,2dsphere,Mongodb,2dsphere,我正在Mac OS X上使用MongoDB 2.6.1 我有一个位置的集合,带有一个有效的GeoJSON字段: db.locations.findOne({},{“location”:1}) { 1“_id”:对象id(“534fd2b6b13e51768cd0e9c8”), “地点”:{ “类型”:“点”, “坐标”:[ 41.311, 56.3526 ] } } 我的数据库中有2dsphere索引: db.locations.getIndexes() [ { “v”:1, “关键”:

我正在Mac OS X上使用MongoDB 2.6.1

我有一个
位置的集合
,带有一个有效的
GeoJSON
字段:

db.locations.findOne({},{“location”:1})
{
1“_id”:对象id(“534fd2b6b13e51768cd0e9c8”),
“地点”:{
“类型”:“点”,
“坐标”:[
41.311,
56.3526
]
}
}
我的数据库中有
2dsphere
索引:

db.locations.getIndexes()
[   
{
“v”:1,
“关键”:{
“位置”:“2dsphere”
},
“ns”:“insta_locations.locations”,
“名称”:“位置\u 2dsphere”
},
...
]
但当我在没有提示的情况下查询位置时,我会得到一个错误:

db.locations.find({
地点:{
$near:{
$geometry:{
键入:“点”,
座标:[41.311,56.35]
},
$maxDistance:1
}
}
})
产生:

错误:{ “$err”:“找不到特殊索引:2d for:{location:{$near:{$geometry:{type:\'Point\',坐标:[41.311,56.35]},$maxDistance:1.0}”, “代码”:13038 }

另一方面,通过提示返回整个集合:

db.locations.find({
地点:{
$near:{
$geometry:{
键入:“点”,
座标:[41.311,56.35]
}, 
$maxDistance:1
}
}
}).hint('location\u 2dsphere').length()
5138
有人知道我遗漏了什么使它正常工作吗

更新
>版本()
2.6.1
>db.version()
2.2.2

您正在运行版本2.6.1的mongo shell,但仍然有版本2.2.2的mongod。当您使用自制、macports或两者的组合时,在Mac OS X安装上可能会发生这种情况。基本上,您路径中的第一个mongod不是最新版本。要更正此问题,我将尝试以下方法:

  • 通过运行“which”,找出mongo和mongod的运行位置 “mongo”和“which mongod”
  • 通过运行“echo$path”检查您的路径
  • 找到正确的mongod文件
  • 更改配置文件中的路径以搜索正确的目录 蒙哥德优先
  • 或者,您可以在启动mongodb时使用正确mongod的完整路径


    或者,您可以直接从mongodb再次下载它。

    您可以在Mongoshell中运行version()和db.version(),并将输出添加到问题中吗?似乎这就是原因。如何升级数据库本身?