使用MongoDB计算Java中的距离

我正在研究Java和MongoDB中的位置计算。 我将纬度和经度传递给方法并从提供的输入中找到最近的位置。 我可以从我的主表中获取位置名称,其中包含纬度和经度的所有地标。

我的要求是我希望使用MongoDB获得距离的位置 – 例如来自XYZ的4Km。 MongoDB有地理空间查询,我正在研究它。 我可以通过使用db.runCommand({geoNear:“data”,near:[ – 73.9000,40.7000],spherical:true,maxDistance:2500/6378137,distanceMultiplier:6378137})在命令提示符下运行来获得提及的输入。

我正在寻找Java中的等效代码,所以我只能通过纬度和经度并获得距离最近的位置。

提前致谢。

您可以使用Java驱动程序中DB对象的“command”方法执行该命令。 API文档可以在这里找到: http : //api.mongodb.org/java/current/com/mongodb/DB.html#command%28com.mongodb.DBObject%29

以下是使用Java驱动程序执行命令的方法:

BasicDBObject myCmd = new BasicDBObject(); myCmd.append("geoNear", "data"); double[] loc = {-73.9000, 40.7000}; myCmd.append("near", loc); myCmd.append("spherical", true); myCmd.append("maxDistance", (double)2500/6378137); myCmd.append("distanceMultiplier", 6378137); System.out.println(myCmd); CommandResult myResult = db.command(myCmd); System.out.println(myResult.toString()); 

我添加了一些System.out.println语句,因此您可以看到命令文档的外观,以及返回结果的字符串表示forms。
您可以将num:1添加到命令文档以将结果限制为1。

 myCmd.append("num", 1); 

这在geoNear文档中有说明: http : //www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-geoNearCommand

希望这会让你开始。 祝你好运!

有一个Java API可供您与之交互。 驱动程序有一个“ 命令 ”方法,可以执行您想要的操作。

请务必阅读有关Java驱动程序的已发布教程以及如何将shell命令转换为Java。