MongoDB 创建地图索引及根据位置坐标查询地点小例子
来源:互联网 发布:女白色t恤淘宝店铺推荐 编辑:程序博客网 时间:2024/06/11 16:57
MongoDB 创建地图索引及根据位置坐标查询地点小例子
1:MongoDB 的安装
参照博客:http://www.cnblogs.com/sweetchildomine/p/6397136.html
可视化工具:本人用的是robomongo ,下载地址:https://robomongo.org/
2:创建地图索引:
db.shop.ensureIndex( { loc : "2dsphere" } )db.shop.ensureIndex( { loc : "2d" } ) 1.2D索引,用于存储和查找平面上的点。2.2Dsphere索引,用于存储和查找球面上的点。
3:spring-mongo的配置:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.10.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"> <context:component-scan base-package="com.binxm.dao"></context:component-scan> <!-- 加载mongodb的属性配置文件 --> <context:property-placeholder location="classpath:properties/mongodb.properties" /> <!-- mongo对象 --> <mongo:mongo-client id="mongo" replica-set="${mongo.hostport}"> <mongo:client-options connections-per-host="${mongo.connectionsPerHost}" threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}" socket-keep-alive="${mongo.socketKeepAlive}" socket-timeout="${mongo.socketTimeout}" /> </mongo:mongo-client> <mongo:db-factory dbname="database" mongo-ref="mongo" /> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongo" /> <constructor-arg name="databaseName" value="${mongo.databaseName}" /> </bean></beans>
普通的增删改查操作
package com.binxm.dao.impl;import com.binxm.dao.MoUserDao;import com.binxm.pogo.MoUser;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.stereotype.Repository;/** * Created by Administrator on 2017/6/13. */@Repositorypublic class MoUserDaoImpl implements MoUserDao{ @Autowired private MongoTemplate mongoTemplate; @Override public MoUser getUserById(String id) { Query query = new Query(); //查找 //mongoTemplate.findOne(new Query(Criteria.where("onumber").is("002").and("cname").is("zcy1")),MoUser.class); //mongoTemplate.findOne(new Query(new Criteria().orOperator(Criteria.where("onumber").is("002"),Criteria.where("cname").is("zc"))),MoUser.class); //修改 //mongoTemplate.upsert(new Query(Criteria.where("dfs").is("sss")), Update.update("",""),MoUser.class); //mongoTemplate.updateFirst(new Query(Criteria.where("dfs").is("sss")), Update.update("",""),MoUser.class); //添加 mongoTemplate.insert(MoUser.class); mongoTemplate.save(MoUser.class); //删除 //mongoTemplate.remove(MoUser.class); query.addCriteria(new Criteria("_id").is(id)); MoUser one = this.mongoTemplate.findOne(query, MoUser.class); return one; }}
根据位置坐标查询相关地点信息
package com.binxm.dao.impl;import com.binxm.dao.ShopDao;import com.mongodb.AggregationOptions;import com.mongodb.BasicDBObject;import com.mongodb.Cursor;import com.mongodb.DBObject;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.stereotype.Repository;import java.util.*;/** * Created by li on 2017/9/24. */@Repositorypublic class ShopDaoImpl implements ShopDao{ @Autowired private MongoTemplate mongoTemplate; @Override public List<DBObject> getShoppingsWithCoordinate(double lon, double lat,double maxDistance) { List<DBObject> pipeLine = new ArrayList<>(); //https://docs.mongodb.com/manual/reference/command/geoNear/ BasicDBObject aggregate = new BasicDBObject("$geoNear", new BasicDBObject("near",new BasicDBObject("type","Point").append("coordinates",new double[]{lon, lat})) .append("distanceField","dist.calculated") //distanceField // org.springframework.data.mongodb.core.aggregation.GeoNearOperation .append("query", new BasicDBObject()) //query document Optional .append("num", 5) //num number Optional .append("maxDistance", maxDistance) //num number Optional .append("spherical",true) //If using a 2dsphere index, spherical must be true. ); pipeLine.add(aggregate);// 聚合// https://docs.mongodb.com/manual/reference/operator/aggregation/// pipeLine.add(new BasicDBObject("$geoNear", geoNear)); BasicDBObject// pipeLine.add(new BasicDBObject("$match",match));// pipeLine.add(new BasicDBObject("$skip", skip));// pipeLine.add(new BasicDBObject("$limit", pageSize)); Cursor cursor=mongoTemplate.getCollection("shop").aggregate(pipeLine, AggregationOptions.builder().build()); List<DBObject> list = new LinkedList<>(); while (cursor.hasNext()) { list.add(cursor.next()); } return list; }}
阅读全文
0 0
- MongoDB 创建地图索引及根据位置坐标查询地点小例子
- 查询地点拾取坐标
- mongodb 索引创建、查询分析
- 百度地图根据地点名称,获得坐标(但是延时太重,不利于使用)
- 百度地图根据输入的位置获取坐标
- 根据地址返回坐标位置的百度地图api
- 根据输入的地点坐标计算中心点
- 百度地图api--根据经纬度获取地点
- 百度地图根据地点获取经纬度
- 根据sqlId查询参数及位置
- 获取鼠标在图片坐标位置的小例子
- lucene索引创建与查询入门例子
- 百度地图Poi关键字查询附近地点
- 地图坐标查询
- 地图坐标查询api
- 地图坐标查询api
- 地图坐标查询
- 百度地图api基本用法和一些demo[根据地址查询经纬度,并进行动态标注BMap.Marker地点]
- 树状数组(二叉索引树)
- linux目录常用命令简单
- Windows平台安装Hadoop
- sendSubviewToBack和bringSubviewToFront
- tensorflow入门之mnist手写数据集识别
- MongoDB 创建地图索引及根据位置坐标查询地点小例子
- CSS3的几个属性和文字翻页效果练习
- erlang高性能网络库esockd的编译和使用(三)-keepalive
- Java基本类型计算不准时,防坑妙招
- 03JXV支持分布式集群部署
- java学习之ArrayList容器类详解
- apply、call和bind的区别
- HashSet 对象去重复处理
- intellij idea怎么创建maven项目