对mongodb和golang来说是新手。我有一个名为“ myplace”的集合,它具有以下字段place_name,city,纬度,经度。我的问题是用户在某个地方并搜索附近的地方。如何查询mongodb以按位置查找附近。也在golang中。
我的文档结构
{ "_id" : ObjectId("544a2147785b707b340ed6c7"), "latitude" : 12.36547, "longitude" : 1.235689, "place_name" : "some_place", "city" : "Some city" }
提前致谢
您好,对于您的情况,我认为您应该将doc改为
{ "_id" : ObjectId("545749dba2b0b4cf603a7546"), "city" : "B", "placeName" : "A", "loc" : { "lon" : 51.10682735591432, "lat" : -114.11773681640625 } } { "_id" : ObjectId("545749f3a2b0b4cf603a7547"), "city" : "B1", "placeName" : "A1", "loc" : { "lon" : 51.09144802136697, "lat" : -114.11773681640625 } }
之后,将上述文件索引如下
db.collectionName.ensureIndex({loc:"2d"})
如果索引执行正确,则编写以下查询以查找文档附近
db.location.find({loc: {$near:[51,-114]}})
如需更多帮助,请参考此mongo $ near和$ geoNear 单击此处
并对golang感到抱歉,因为我对golang不了解更多
对于golang
var places []Place lat := 51.515614 long := -0.268998 err = coll.Find(bson.M{"loc": bson.M{"$near": []float64{long, lat}, "$maxDistance" : 0.056}}).All(&places)