【问题标题】:MongoDB Java Geospatial Query where clauseMongoDB Java 地理空间查询 where 子句
【发布时间】:2014-08-23 05:11:48
【问题描述】:

我在 mongodb java 驱动程序中使用地理空间查询来使用以下代码获取给定位置周围的位置:

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"));
}

到目前为止,这工作正常。我遇到麻烦的地方是添加额外的选择标准。即我的收藏有一个名为 category 的字段,我想将该类别添加到查询中。例如给我属于给定类别的所有位置。

期待收到您的答案和提示!

BR 马丁

【问题讨论】:

  • 您已经尝试过 myCmd.append("query",categoryDocument) 其中 categoryDocument 是代表您的查询的文档,我认为您必须将其构造为另一个 DBObject。我不使用Java驱动程序,所以无法测试。但是额外的过滤肯定是通过以文档为参数的查询字段完成的。
  • 嗨,约翰,这解决了我的问题!!多谢! br马丁
  • 请将您的解决方案添加为其他用户的答案。
  • @Martin,我已经添加了解决方案,以防其他人有这个问题。如果它对您有帮助并且是正确的,请随意编辑和/或接受它。

标签: java mongodb command geospatial


【解决方案1】:

根据geoNear docs 将地理空间查询限制在其他一些属性上,您可以添加一个文档作为查询参数。

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"));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多