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; }
أكثر...
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; }
أكثر...