Java中的Mongodb地理查询

3

如何在Java中运行mongodb的geonear命令

db.runCommand ({ geoNear : "mycollection", near : [-121.97679901123047,37.557369232177734], spherical : true, maxDistance : 50 / 3959 /*转换为弧度*/, query : { $or : [{"myuserid" : "att"},{"_id":{$in: [ObjectId("4fda8fbbe7e96e2d775595d")] }}] } });

我尝试使用Commandresult在java中实现此操作,但遇到错误。

目前为止我所做的就是打印命令,虽然命令正确但仍然提示空指针异常。我对java和数据库都不太熟悉。

BasicDBObject myCmd = new BasicDBObject(); 
myCmd.append("geoNear", "mycollection"); 
double[] loc = {-121.97679901123047,37.557369232177734}; 
myCmd.append("near", loc); 
myCmd.append("spherical", true); 
myCmd.append("maxDistance", (double)50 / 3959 ); 
System.out.println(myCmd); 
CommandResult myResults = db.command(myCmd); 
System.out.println(myResults.toString());

感谢您提前的支持。
谢谢。

2
解决方案是修复您的代码。不客气。(提示:展示给我们错误信息以获得更详细的答案。) - user684934
这是我目前所做的,尽管命令打印正确,但我仍然遇到了空指针异常。我是Java和数据库方面的新手。 [BasicDBObject myCmd = new BasicDBObject(); myCmd.append("geoNear", "mycollection"); double[] loc = {-121.97679901123047,37.557369232177734}; myCmd.append("near", loc); myCmd.append("spherical", true); myCmd.append("maxDistance", (double)50 / 3959 ); System.out.println(myCmd); CommandResult myResults = db.command(myCmd); System.out.println(myResults.toString());] - atandon
也许要检查一下myResults不是null?它在哪里抛出异常?是哪一行? - Asya Kamsky
提供的上下文越多,我们就越容易帮助您。如果您没有尽可能提供更多信息,那么很难想到可能存在的所有代码问题。请再仔细思考一下问题。 - tucuxi
我同意,空指针位于CommandResult处,尽管我可以在mongodb命令提示符上运行相同的内容。 {“geoNear”:“mycollection”,“near”:[-121.97679901123047,37.557369232177734],“spherical”:true,“maxDistance”:0.01262945188178833} java.lang.NullPointerException 在com.xxResource.getxxx(xxxesource.java:87)处。 - atandon
1个回答

2

我已经找出了问题所在。连接的数据库不正确。感谢你的帮助。地理查询现在运行良好。谢谢。


和你犯的同样的错误和异常一样,感谢你把你所犯的错误写成答案。谢谢你花时间写下这个错误。 - Saumyaraj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接