我想根据它们与2D空间中MULTIPLE点的接近度来命令我的结果。
我认为这可以通过查询第一个点然后在第二个点重新查询/检查这些结果来完成吗?
也许下面的代码解释了我想要实现的目标更好一点?
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
答案 0 :(得分:3)
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}}})
答案 1 :(得分:1)
您打算在上面的查询返回什么?靠近一个或另一个位置的地方?在这种情况下,您应该运行两个查询,然后将结果合并到您的应用程序代码中。