mogoTemplate 模板 实现mongodb java的操作 ,根据经纬度查询周边
来源:互联网 发布:hadoop云计算实战 编辑:程序博客网 时间:2024/05/21 09:29
主要是索引啊,实现这个由于网上找不到相关资料。只能自己一步步测试出来。
前提条件:
建立空间索引的key可以使用array或内嵌文档存储,但是前两个elements必须存储固定的一对空间位置数值。如
建立空间索引的key可以使用array或内嵌文档存储,但是前两个elements必须存储固定的一对空间位置数值。如
{ loc : [ 50 , 30 ] }
{ loc : { x : 50 , y : 30 } }
{ loc : { foo : 50 , y : 30 } }
{ loc : { lat : 40.739037, long: 73.992964 } }
下边是我的数据格式 由于原来左边在另一个实体里边,我把它提取到外边,个人觉得方便写查询语句 。。。同时可以用于创建2d索引 ,否则原来的数据格式无法创建2d索引。
{
"_class" : "com.mongodb.BasicDBObject",
"hotelDataEntity" : {
"hotelInfo" : {
"lon" : 116.25390564321,
"fax" : "0",
"cityID" : 1,
"lat" : 40.074496992216,
"minPrice" : 43
}
},
"id" : "1288173",
"coordinates" : [116.25390564321, 40.074496992216]
}
/**
* @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
下边是查询方法
public List<HotelDataEntity> findLonAndLat() {
List<Map> dBCursor = new ArrayList<Map>();
MongoTemplate mogoTemplate = null;
try {
mogoTemplate = getmongo();
Query searchQuery= new Query();
Circle cri = new Circle(116.35205435254, 39.91133015557, 5000.00);
searchQuery.addCriteria(Criteria.where("coordinates").within(cri));
//模板类提供了很多方式 ,可以直接添加 以一个圆的方式搜索周边。方圆多大就定义一个多大的圆 ,这里第一个参数为 纬度 //,第二个参数为经度 。。。第三个参数可以说是圆半径。。
searchQuery.limit(10); //我是分页哦
List<Map> myDoc = mogoTemplate.find(searchQuery, Map.class,
HOTRLURL);
} catch (Exception e) {
e.printStackTrace();
}
return hotelDataEntityList;
}
-------------------------------------so以上基本上完成了搜索 ----------------------------------------------
还有种搜索是2dsphere 的索引 ,
0 0
- mogoTemplate 模板 实现mongodb java的操作 ,根据经纬度查询周边
- mongodb 分页查询并 根据传入的经纬度计算计算两点距离进行排序
- 根据经纬度求地球表面两点间距离的实现--JAVA
- Java程序实现根据经纬度计算GPS点的距离
- 根据经纬度查询附近的点
- 根据经纬度查询附近的点
- 根据经纬度查询相应的省市区名称
- 百度地图,根据地图上任意一点的经纬度获取周边最近的POI位置信息
- mongoDB查询某个经纬度附近的用户
- 根据经纬度查询地名,
- 根据经纬度查询距离
- 根据经纬度查询地址
- 根据地址查询经纬度
- 根据地址查询经纬度
- 根据地址查询经纬度
- 根据地址查询经纬度
- 利用GoogleApi根据经纬度查询地名,和根据地名查询经纬度Java代码
- 利用GoogleApi根据经纬度查询地名,和根据地名查询经纬度Java代码
- Android之Sensor 简介
- 数据库
- jQuery 获取屏幕高度、宽度
- Applied Math and Machine Learning Basics 摘要笔记
- 的四次C++作业
- mogoTemplate 模板 实现mongodb java的操作 ,根据经纬度查询周边
- lucene5 构建索引和查询举例
- 谈谈对接芝麻信用踩的坑
- JAVA 常用设计模式
- ORACLE数据库日常维护知识总结
- 十大热门大数据技术
- CSS属性(2)
- 读写文件,文件内容操作
- python&DBA遍历文件夹下ip名称SQL 执行该IP下SQL