我的数据库看起来像
var selectedIndex = $(".item.selected").index();
var fooCount = $(".item.selected").prevAll('.item > .foo').length;
var finalIndex = selectedIndex - fooCount;
如果我有一个坐标对作为中心位置,说[38,-98],我想检索所有在坐标范围[38 + - 2,-98 + - 2]的记录,如何编写java代码文件过滤器?
到目前为止,我所做的是检索特定位置而不是范围内。
{
"_id" : ObjectId("5a8351093cf24e144d8fef24"),
"__type" : "TrafficIncident:http://schemas.microsoft.com/search/local/ws/rest/v1",
"point" : {
"type" : "Point",
"coordinates" : [
37.410883,
-95.71027
]
},
...
}
{
"_id" : ObjectId("5a8351093cf24e144d8fef25"),
"__type" : "TrafficIncident:http://schemas.microsoft.com/search/local/ws/rest/v2",
"point" : {
"type" : "Point",
"coordinates" : [
40.2346,
-100.826167
]
},
...
}
答案 0 :(得分:0)
您希望使用MongoDB的Geospatial Query系统。
我假设你正在使用Mongo's official Java Driver。首先,您要在2dsphere
字段上创建point.coordinates
索引。您可以使用Java执行此操作:
collection.createIndex(Indexes.geo2dsphere("point.coordinates"));
然后,您可以使用以下命令查询您所在位置范围内的所有文档:
Point refPoint = new Point(new Position(38, -98));
collection.find(Filters.near("point.coordinates", refPoint, 2, 2)).forEach(printBlock);
使用Java驱动程序进行地理空间搜索的