我正在尝试对geonear查询进行POC,但我正在
Error: error: {
"ok" : 0,
"errmsg" : "error processing query: ns=zircon.storeTree: GEONEAR field=start maxdist=0.045045 isNearSphere=1\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query",
"code" : 2
我也创建了我的基本索引。
> db.store.getIndexes();
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "zircon.store"
},
{
"v" : 1,
"key" : {
"point" : "2dsphere"
},
"name" : "point_2dsphere",
"ns" : "zircon.store",
"2dsphereIndexVersion" : 3
},
{
"v" : 1,
"key" : {
"location.Point" : "2dsphere"
},
"name" : "location.Point_2dsphere",
"ns" : "zircon.store",
"2dsphereIndexVersion" : 3
}
]
我的模特是
```json
{
"_id": ObjectId("57b4d4437ab5db070e8cc02d"),
"location": {
"Point": {
"x": 47.629104999999996,
"y": 77.21983919
}
},
"name": "Gulati XX :19",
"createdDate": ISODate("2016-08-17T21:16:51.605Z"),
"modifiedDate": ISODate("2016-08-17T21:16:51.605Z")
}
```
请建议我在这里做错了什么..是什么导致geonear仍然没有工作。
答案 0 :(得分:0)
有同样的错误,问题是我在“location.coordinates”字段而不是“location”字段上创建了索引。这在我的流星开发服务器上运行良好,但一旦推送到登台服务器,db就找不到索引。
创建2dspere索引时,您应该使用“复合”方法,并按照mongo文档在parrent位置字段中执行:https://docs.mongodb.com/manual/core/2dsphere/#id1
鉴于您的json文件和数据库名称,我将尝试以下操作:db.store.createIndex({“location”:“2dspere”}) 要么 db.store.ensureIndex({“location”:“2dspere”})
答案 1 :(得分:-1)
您需要为位置值提供索引。
示例:的
{ location : { $near : [ -73.9667, 40.78 ], $maxDistance: 0.10 } }