2012-03-15 30 views
2

我想根据他们接近2D空间中的多个点来排序我的结果。MongoDB geoNear multiple coordinates

我认为这将通过查询第一点,然后重新查询/检查这些结果对第二点来完成?

也许下面的代码解释了我想要实现更好的一点?

db.runCommand({ 
    geoNear:"places", 
    near:[ [52.5243, 13.4063], [48.1448, 11.5580] ] 
}) 

解决方案:柜面有人有兴趣,我这是怎么实现这一点(由于下面的回答)

a = Trip.geo_near([52.5243, 13.4063], :max_distance => 40, :unit => :mi).uniq 
b = Trip.geo_near([48.1448, 11.5580], :max_distance => 40, :unit => :mi).uniq 
@results = a & b 

回答

1

你有什么打算上面的查询返回?靠近一个或另一个位置的地方?在这种情况下,您应该运行两个查询,然后将结果合并到您的应用程序代码中。

+0

当然!不知道我是如何忽略这一点的,谢谢。 – johnrees 2012-03-15 16:35:15

2

MongoDB在他们有关Geospacial索引的文档中有一整段内容。 http://www.mongodb.org/display/DOCS/Geospatial+Indexing

我想你要找的是一个边界框查询。这是直接来自他们的代码示例。

box = [[40.73083, -73.99756], [40.741404, -73.988135]] 
db.places.find({"loc" : {"$within" : {"$box" : box}}})