mongodb lbs 坐标定位 java操作版本
2016-04-29 11:00
447 查看
好久没写笔记了。。。。。。
话不多说直接上代码,
/**
* @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必须存储固定的一对空间位置数值。如
/**
* @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 工具模板的。区别主要在与查询条件入参的方式 。。。。。。。。
话不多说直接上代码,
/**
* @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 工具模板的。区别主要在与查询条件入参的方式 。。。。。。。。
相关文章推荐
- Java操作MongoDB模糊查询和分页查询
- MongoDB入门教程(一)
- Mongodb事务模拟
- mongodb副本集的配置及node.js的使用
- MongoDB入门
- 提升 MongoDB 安全性的 10 个提示
- NoSQL Mongodb的快速入门
- mongodb csv 文件导入数据库,删除特定字段
- mongodb的用户管理及安全认证
- 使用MongoDB 记录业务日志
- MongoDB查询语法
- Node.js + MongoDB + AngularJS - 6 访问文件系统-1
- Python中MySQL数据迁移到MongoDB脚本的方法
- 一个慌里慌张的中午
- MongoDB数据仓储
- Python迁移MySQL数据到MongoDB脚本
- mongodb 3.x for java
- Python中MySQL数据迁移到MongoDB脚本的方法
- MongoEngine文档 新手教程 安装MongoEngine&连接MongoDB
- MongDB 分片和副本集