MongoDB Java地理空间查询where子句
我使用mongodb java驱动程序中的地理空间查询,使用以下代码获取给定位置周围的位置:MongoDB Java地理空间查询where子句,java,mongodb,command,geospatial,Java,Mongodb,Command,Geospatial,我使用mongodb java驱动程序中的地理空间查询,使用以下代码获取给定位置周围的位置: BasicDBObject myCmd = new BasicDBObject(); myCmd.append("geoNear", collectionName); double[] loc = {5,5}; myCmd.append("near", loc); myCmd.append("spherical", true); myCmd.append("distanceMultiplie
BasicDBObject myCmd = new BasicDBObject();
myCmd.append("geoNear", collectionName);
double[] loc = {5,5};
myCmd.append("near", loc);
myCmd.append("spherical", true);
myCmd.append("distanceMultiplier", 6378000);
myCmd.append("maxDistance", 200);
BasicDBList results = (BasicDBList)myResults.get("results");
for( Iterator< Object > it = results.iterator(); it.hasNext(); )
{
BasicDBObject result = (BasicDBObject) it.next();
BasicDBObject dbo = (BasicDBObject) result.get("obj");
System.out.println(dbo.getString("name"));
}
BasicDBObject myCmd=new BasicDBObject();
myCmd.append(“geoNear”,collectionName);
双[]loc={5,5};
myCmd.追加(“近”,loc);
myCmd.append(“球形”,true);
myCmd.append(“距离乘数”,6378000);
myCmd.append(“maxDistance”,200);
BasicDBList结果=(BasicDBList)myResults.get(“结果”);
for(Iterator
到目前为止,这一切都很好。我遇到的麻烦是增加了额外的选择标准。i、 e.我的集合有一个名为category的字段,我想将该类别添加到查询中。e、 g.告诉我属于给定类别的所有位置
期待您的回答和提示
溴
Martin要将地理空间查询限制在某些其他属性上,请将文档添加为查询参数
BasicDBObject myCmd = new BasicDBObject();
BasicDBObject myQuery = new BasicDBObject();
myCmd.append("geoNear", collectionName);
double[] loc = {5,5};
myCmd.append("near", loc);
myCmd.append("spherical", true);
myCmd.append("distanceMultiplier", 6378000);
myCmd.append("maxDistance", 200);
//construct a query document from another BasicDBOject
myQuery.append("category":"some category");
//add this as a query document
myCmd.append("query", myQuery);
BasicDBList results = (BasicDBList)myResults.get("results");
for( Iterator< Object > it = results.iterator(); it.hasNext(); )
{
BasicDBObject result = (BasicDBObject) it.next();
BasicDBObject dbo = (BasicDBObject) result.get("obj");
System.out.println(dbo.getString("name"));
}
BasicDBObject myCmd=new BasicDBObject();
BasicDBObject myQuery=新建BasicDBObject();
myCmd.append(“geoNear”,collectionName);
双[]loc={5,5};
myCmd.追加(“近”,loc);
myCmd.append(“球形”,true);
myCmd.append(“距离乘数”,6378000);
myCmd.append(“maxDistance”,200);
//从另一个基本对象构造查询文档
append(“category”:“some category”);
//将其添加为查询文档
myCmd.append(“查询”,myQuery);
BasicDBList结果=(BasicDBList)myResults.get(“结果”);
for(Iterator
您尝试了myCmd.append(“query”,categoryDocument),其中categoryDocument是表示您的查询的文档,我认为您必须将其构造为另一个DBObject。我不使用Java驱动程序,因此无法测试。但是额外的过滤肯定是通过查询字段完成的,并将文档作为参数。嗨,john,这解决了我的问题!!谢谢!br Martin请添加您的解决方案作为其他用户的答案。@Martin,我已经添加了解决方案,以防其他人有此问题。如果它对您有帮助并且是正确的,请随意编辑和/或接受它。