我指定了一个查询,该查询应该为我提供特定圈子中的所有插入内容。这是我的Java代码:
....
DBCollection collRadius = mongo.getMyDB().getCollection(theCollectionName);
List circle = new ArrayList();
circle.add(new double[] { theLongitude, theLatitude });
circle.add(theRaduisInMeters);
BasicDBObject query =
new BasicDBObject("geoposition", new BasicDBObject("$within", new BasicDBObject("$centerSphere", circle)));
List<DBObject> dbObList = new ArrayList<DBObject>();
for (final DBObject venue : collRadius.find(query).toArray()) {
dbObList.add(venue);
}
return dbObList;
}
&#13;
我为DBObject&#34;地理位置指定了地理空间索引&#34;:
coll.createIndex(new BasicDBObject("geoposition", "2dsphere"));
BasicDBObject jts = new BasicDBObject();
BasicDBList l = new BasicDBList();
l.add(theGeoposition.y);
l.add(theGeoposition.x);
jts.put("geoposition", BasicDBObjectBuilder.start().add("type", "Point").add("coordinate", l)
.get());
&#13;
我的测试功能非常简单,我添加3倍相同的坐标(JTS格式):
new Coordinate(
52.417612999999998,
9.637832999999999)
&#13;
我正在使用以下参数检查查询:经度:9.637832999999998,纬度:52.417612999999997和半径(10. / 6371)。 我无法找到原因,为什么查询总是让我无法匹配。我将$更改为$ geoWithin,我检查了经度,纬度的正确值(JTS与MongoDB的坐标符号)。有什么想法吗?
最佳,
特隆