我在 MongoDB 中遇到关于多边形搜索的问题。
我有一个文档结构,例如:
Object:{id,type,...,
data:{
name,
loc:{
lng:xxx
lat:yyy
type:Point}}}
我在“data.loc”上有一个二维索引。
我在java代码中的查询是:
DBCollection coll = database.getCollection(type);
BasicDBList points = new BasicDBList();
points.add(bbox.getNe());
points.add(bbox.getSe());
points.add(bbox.getSw());
points.add(bbox.getNw());
points.add(bbox.getNe());
BasicDBList parentList = new BasicDBList();
parentList.add(points);
DBObject query = new BasicDBObject("data.loc",
new BasicDBObject("$geoWithin",
new BasicDBObject("$geometry", new BasicDBObject("type","Polygon")
.append("coordinates", parentList))));
调试器告诉我查询是例如
{ "data.loc" : { "$geoWithin" : { "$geometry" : { "type" : "Polygon" , "coordinates" : [ [ [ 48.240553 , 16.451597] , [ 48.162751 , 16.451597] , [ 48.162751 , 16.303968 ] , [ 48.240553 , 16.303968] , [ 48.240553 , 16.451597]]]}}}}
但是打字后
DBCursor cursor = coll.find(query);
try {
while(cursor.hasNext()) {
data.add(cursor.next().get("data"));
}
} finally {
cursor.close();
}
return data;´
数据始终为空。
任何人都可以在我的方法中发现任何问题,或者是否有人有更好的方法?事实上,我想对我的数据库进行边界框搜索。
谢谢您的帮助!最好的问候丹尼尔