mongodb lbs 坐标定位 java操作版本

好久没写笔记了。。。。。。
话不多说直接上代码,     



    /**
     * @Title: testjingweidu
     * @Description: 先添加两条测试数据
     * @param 设定文件
     * @return void 返回类型
     * @throws
     */
    @Test
    public void testjingweidu() {

        Mongo mongo;
        try {
            mongo = new Mongo("**************", 27017);
            // 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
            DB db = mongo.getDB("yourdb");
            // Get collection from MongoDB, database named "yourDB"
            //
            // 从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
            DBCollection collection = db.getCollection("testss");


            BasicDBList coordinates = new BasicDBList();
            coordinates.put(0, -73.97);
            coordinates.put(1, 40.77);
            collection.insert(new BasicDBObject("name", "Central Park")
                            .append("coordinates", coordinates)
                            .append("category", "Parks"));

            coordinates.put(0, -73.88);
            coordinates.put(1, 40.78);
            collection.insert(new BasicDBObject("name", "La Guardia Airport")
                    .append("coordinates", coordinates)
                    .append("category", "Airport"));


        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
-----------------------------------------------我是分割线--------------------------------------------------------------
前提条件:
建立空间索引的key可以使用array或内嵌文档存储,但是前两个elements必须存储固定的一对空间位置数值。如
{ loc : [ 50 , 30 ] }
{ loc : { x : 50 , y : 30 } }
{ loc : { foo : 50 , y : 30 } }
{ loc : { lat : 40.739037, long: 73.992964 } }


    /**
     * @Title: testsuoyin
     * @Description: 添加2d索引    ,注意2d索引需要特定条件   
     * @param 设定文件
     * @return void 返回类型
     * @throws
     */
    @Test
    public void testsuoyin() {
        Mongo mongo;
        try {
            mongo = new Mongo("**************", 27017);
            // 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
            DB db = mongo.getDB("yourdb");
            // Get collection from MongoDB, database named "yourDB"
            //
            // 从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
            DBCollection collection = db.getCollection("hotel");

            BasicDBObject dObject1 = new BasicDBObject();
            dObject1.put("coordinates", "2d");// 2d  -----2dsphere   区别在下边
            collection.ensureIndex(dObject1);

        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }




2d 和 2dsphere   区别,我个人测试觉得他的区别  2d填写的是    搜索的时候入参是经纬度  ,2dsphere   可以直接填距离  也就是多少m



---------------------------以上是java 添加索引,本人比较懒,不想直接dos操作----------------------------


-------------------------下边就是查询---------------




    /**
     * @Title: findLat
     * @Description: TODO(这里用一句话描述这个方法的作用)
     * @param 设定文件
     * @return void 返回类型
     * @throws
     */
    @Test
    public void findLat() {
        Mongo mongo;
        try {
            mongo = new Mongo("**********", 27017);
            DB db = mongo.getDB("yourdb");
            DBCollection collection = db.getCollection("hotel");

            BasicDBList myLocation = new BasicDBList();
            myLocation.put(0,-73.88);
            myLocation.put(1, 40.78);
            DBCursor myDoc = collection.find(
                            new BasicDBObject("coordinates",
                                    new BasicDBObject("$near", myLocation)
                                         .append("$maxDistance",  0.05)
//这里是2d索引,所以这里应该是经纬度 具体的我也说不大清楚,如果是 2dsphere    的索引,可以直接添加 距离,这里是方圆  多少m
//这里可以继续添加别的查询条件等,直接append就可以 。具体的我在后边再写个demo
                            )
                        ) .limit(5);  //这里是需要查询出来的条数。要多少写多少啊,这个值是最大值,不够的话就。。
            while(myDoc.hasNext()){
                System.out.println("-----: "+myDoc.next());
            }
        System.out.println(myDoc);

        } catch (UnknownHostException e) {

            e.printStackTrace();
        }
    }

----------------------------------------以上代码是mongo原生写法。所有东西都用java操作的--------------------------------
            再写一个使用 mogoTemplate  工具模板的。区别主要在与查询条件入参的方式   。。。。。。。。














你可能感兴趣的:(mongodb lbs 坐标定位 java操作版本)