mongodb $geoIntersects query for all documents who's polygon contains a point. no res

المشرف العام

Administrator
طاقم الإدارة
I am trying to find all documents for a point that is within a document's polygon.

using mongoTemplate to set up my geo index.

mongoTemplate.indexOps(Boundary.class).ensureIndex( new GeospatialIndex("polygon"));I have a Criteria2ds that extends Criteria:

public class Criteria2ds extends Criteria { private Map criteria = new LinkedHashMap(); ... ... public static Criteria2ds where(String key) { return new Criteria2ds(key); } public Criteria2ds intersects(Point point) { Assert.notNull(point); final ArrayList coordinates = new ArrayList(); coordinates.add(point.getY()); coordinates.add(point.getX()); BasicDBObject geometry = new BasicDBObject() .append("type", "Point") .append("coordinates", coordinates); criteria.put("$geoIntersects", new BasicDBObject("$geometry", geometry)); return this; }my query:

Query query = new Query();query.addCriteria(Criteria2ds.where("polygon").intersects(point)); ..this creates the query:

{ "polygon" : { "$geoIntersects" : { "$geometry" : { "type" : "Point" , "coordinates" : [ -105.01621 , 39.57422]}}}}Collection list = mongoTemplate.find(query, Boundary.class)however, the results are 0?

is there something wrong with my code?

public classMyDoc Polygon polygon; public Collection getPolygons() { return polygons; } public void setPolygons(Collection polygons) { this.polygons = polygons; }

أكثر...
 
أعلى