对于一个对象,我想关联多个纬度/经度对,以便在指定地理位置后,我可以使该对象离我最近[这些经纬度对中的任何一个满足最近的条件]
虽然我知道如果一个对象只有一个纬度/经度对,该如何进行地理空间搜索,但是我却陷入了这种多重地理空间搜索的困境。
我想知道如何在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