java 如何实现 mongodb的within地理查询

魏中火头兵 发布于 2013/04/22 17:26
阅读 1K+
收藏 0

  比如在mongodb中 查找 {"geom.coordinates":{$within:{$polygon:[[116.342059,39.973675],[116.380778,39.973675],[116.380778,39.943997],[116.342059,39.943997]]}}}  

能够查到这四个点坐标内的点,那如何在其他语言中实现呢?比如说java。 spring 整合mongodb 中说继承MongoRepository接口  调用Within(在地理位置范围内的)findByLocationWithin(Box box) {"location" : {"$within" : {"$box" : [ [x1, y1], x2, y2]}}}  

都是纯粹的转载,也没有相应的例子,作孽啊~

加载中
0
o
okey_kkke
 DBObject dbObject = new BasicDBObject();
        List<Double[]> polygon = new ArrayList<Double[]>();
        polygon.add(new Double[]{121.46326251,31.22373576});
        polygon.add(new Double[]{121.46397061,31.21879961});
        polygon.add(new Double[]{121.47126622,31.22188244});
        polygon.add(new Double[]{121.46748967,31.22329537});
        polygon.add(new Double[]{121.46326251,31.22373576});
        DBObject searchObj = new BasicDBObject("$within",new BasicDBObject("$polygon",polygon));
        dbObject.put("theGeom.coordinates",searchObj);
        System.out.println("dbObject = " + dbObject);
        DBCursor dbCursor = dbCollection.find(dbObject);
0
tbaby
tbaby

MongoDB Plugin可能java上最好用而且实时跟进官方版本的ORM,让您更加舒适地使用MongoDB。

  • 与MongoDB版本基本同步(基于最新3.4.0)
  • 使用方式更像是自然语言,用起来更舒适
  • 几乎没有任何学习成本
  • 支持MongoDB的授权机制(可以使用用户名和密码登录)、支持连接MongoDB副本集、读写分离、安全写入、SSL连接、地理位置等特性
  • 内置JFinal和Resty插件。(基于最新版的JFinal和Resty)

强烈推荐 https://www.oschina.net/p/mongodb-plugin  

使用plugin的话可以使用plugin的地理位置模块

在文档中插入索引(1.0.8以上版本的MongoQuery才支持),使用setGeo(经度,纬度)

query.add(new MongoQuery().set("name", "深圳大学").setGeo("geo", 113.9365065988, 22.5350151812));

我们先来看一个使用的例子

MongoQuery query = new MongoQuery().use("point");
 MongoGeospatial geo = new MongoGeospatial(113.9365065988, 22.5350151812).circleSphere("geo", 5000.0);
 query.geo(geo); System.out.println(JSON.toJSONString(query.find()));

具体可参考:https://t-baby.gitbooks.io/mongodb-plugin/content/%E5%9C%B0%E7%90%86%E4%BD%8D%E7%BD%AE.html
返回顶部
顶部