我来是因为我需要实现地理计算,但是,它不起作用。我目前正在使用这个包globalsign/mgo从文档中我们有这个:db.<collection>.find( { <location field> : { $near : { $geometry : { type : "Point" , coordinates : [ <longitude> , <latitude> ] } , $maxDistance : <distance in meters>, } } } 查询2dsphere索引:https://docs.mongodb.com/manual/tutorial/query-a-2dsphere-index/ 2dsphere索引:https://docs.mongodb.com/manual/core/2dsphere/所以我有以下内容:import ( "github.com/globalsign/mgo/bson" "shared/models" "time")type Address struct { ID *bson.ObjectId `protobuf:"bytes,1,opt,name=id,proto3" json:"_id,omitempty" bson:"_id"` IsArchived bool `protobuf:"varint,2,opt,name=IsArchived,proto3" json:"is_archived,omitempty" bson:"is_archived"` CreatedAt time.Time `protobuf:"varint,3,opt,name=CreatedAt,proto3" json:"created_at,omitempty" bson:"created_at"` UpdatedAt time.Time `protobuf:"varint,4,opt,name=UpdatedAt,proto3" json:"update_at,omitempty" bson:"updated_at"` PlaceID *bson.ObjectId `protobuf:"bytes,5,opt,name=PlaceID,proto3" json:"place_id,omitempty" bson:"place_id"` CountryCode string `protobuf:"bytes,6,opt,name=CountryCode,proto3" json:"country_code,omitempty" bson:"country_code,omitempty"` AdministrativeArea string `protobuf:"bytes,7,opt,name=AdministrativeArea,proto3" json:"administrative_area,omitempty" bson:"administrative_area,omitempty"`由此,我收到以下错误:“错误处理查询:ns=DBNAME.addressDocumentTree:GEONEAR field=location maxdist=5e+06 isNearSphere=0\nSort:{}\nProj:{}\n 规划器返回错误:无法找到 $geoNear 查询的索引”我在程序初始化时确保我的索引
1 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
终于找到了问题..实际上,我没有以正确的方式创建索引..
// EnsureIndex force ids to be unique
func EnsureAddressIndex(session *mgo.Session) error {
_session := session.Copy()
defer _session.Close()
c := _session.DB(constants.DBName).C(addressDocument)
// Might be needed one day
pIndex := mgo.Index{
Key: []string{"$2dsphere:location"},
Bits: 26,
}
err := c.EnsureIndex(pIndex)
if err != nil {
return err
}
return nil
}
在索引声明中,我有以下行:
pIndex := mgo.Index{
Key: []string{"location:2dsphere"},
Bits: 26,
}
但正确的写法是
pIndex := mgo.Index{
Key: []string{"$2dsphere:location"},
Bits: 26,
}
希望能帮助到你 !
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消