3

我希望通过地理空间索引从 MongoDB 集合中获取文档列表。我已按 2dsphere 为集合编制索引

db.getCollection("Info").ensureIndex(new BasicDBObject("location", "2dsphere"), "geospatial");

Info 集合中的文档如下所示

{ "_id" : ObjectId("52631572fe38203a7388ebb5"), "location" : { "type" : "Point", "coordinates" : [  144.6682361,  -37.8978304 ] }

当我通过坐标 [ 144.6682361, -37.8978304 ] 查询 Info 集合时,返回的集合为零。

我正在使用 JAVA API 来执行操作。我的 JAVA 代码如下

DBCollection coll1=db.getCollection("Info");
BasicDBObject locQuery = new BasicDBObject();
locQuery.put("near", loc);
locQuery.append("maxDistance", 3000);           
locCursor =coll1.find(locQuery);
System.out.println("LOCCURSOR"+locCursor.size());

locCursor.size() 总是返回 0。不知道我在哪里失踪。同时,我没有收到任何错误。它只给了我 0 个返回的文件。Mongo用户有什么想法吗?感谢您的时间和帮助。

4

1 回答 1

3

您可以直接将坐标值传递到查询中:

   double lat_lng_values[] = {144.6682361, -37.8978304};
    BasicDBObject geo = new BasicDBObject("$geometry", new BasicDBObject("type","Point").append("coordinates",lat_lng_values));
    BasicDBObject filter = new BasicDBObject("$near", geo);
    filter.put("$maxDistance", 3000);
    BasicDBObject locQuery = new BasicDBObject("location", filter);
    System.out.println(locQuery);
于 2013-10-20T08:21:56.320 回答