对于一个对象,我想关联多个纬度/经度对,这样,当给定我的地理位置时,我可以得到离我最近的对象[即如果这些纬度/经度对任何一个满足最近的条件]一对多地理空间搜索
虽然我知道如何做一个地理空间搜索,如果一个对象只有一个经纬度/对,我坚持这个多地理空间搜索。
我想知道如何在MySQL,Sphinx或MongoDB中实现这个功能?如果还有其他技术可以完成这项工作,我也很乐意了解这一点。非常感谢!
对于一个对象,我想关联多个纬度/经度对,这样,当给定我的地理位置时,我可以得到离我最近的对象[即如果这些纬度/经度对任何一个满足最近的条件]一对多地理空间搜索
虽然我知道如何做一个地理空间搜索,如果一个对象只有一个经纬度/对,我坚持这个多地理空间搜索。
我想知道如何在MySQL,Sphinx或MongoDB中实现这个功能?如果还有其他技术可以完成这项工作,我也很乐意了解这一点。非常感谢!
您可以在MongoDB中使用位置数组。
> db.array.insert({locs:[ [ 1, 2], [1.5, 1.8], [2, 1] ]})
Inserted 1 record(s) in 134ms
> db.array.ensureIndex({locs:'2d'})
Inserted 1 record(s) in 6ms
> db.array.insert({locs:[ [ 1, 2], [7.5, 1.8], [2, 5] ]})
Inserted 1 record(s) in 2ms
> db.array.find({locs:{$near:[1,2]}})
{ "_id" : ObjectId("51a193f11192cab2195f7a8a"), "locs" : [ [ 1, 2 ], [ 1.5, 1.8 ], [ 2, 1 ] ] }
{ "_id" : ObjectId("51a1940b1192cab2195f7a8c"), "locs" : [ [ 1, 2 ], [ 7.5, 1.8 ], [ 2, 5 ] ] }
{ "_id" : ObjectId("51a193f11192cab2195f7a8a"), "locs" : [ [ 1, 2 ], [ 1.5, 1.8 ], [ 2, 1 ] ] }
{ "_id" : ObjectId("51a193f11192cab2195f7a8a"), "locs" : [ [ 1, 2 ], [ 1.5, 1.8 ], [ 2, 1 ] ] }
{ "_id" : ObjectId("51a1940b1192cab2195f7a8c"), "locs" : [ [ 1, 2 ], [ 7.5, 1.8 ], [ 2, 5 ] ] }
{ "_id" : ObjectId("51a1940b1192cab2195f7a8c"), "locs" : [ [ 1, 2 ], [ 7.5, 1.8 ], [ 2, 5 ] ] }
Fetched 6 record(s) in 8ms
建立新的表格 - 一对多的关系。所以有你的对象表,其次是一个object_id和lat/long。如果一个对象有许多位置,它在这个新表中有很多行。
然后,只要搜索这个新的表格,否则。 (是那个mysql或狮身人面像)
(你已经有了MongoDB的答案:)