美文网首页
SpringMVC下Mongo数据库查询距离最近的点

SpringMVC下Mongo数据库查询距离最近的点

作者: 雨夜青草 | 来源:发表于2017-08-21 11:41 被阅读0次

A、插入地理坐标

db.mapinfo.insert({"address" : "厦门市天马路","loc" : { "type": "Point", "coordinates": [118.768964,129.99646]}})

B、地理坐标索引构建

db.mapinfo.ensureIndex( { loc : "2dsphere" } )

C、查询一定范围内的坐标 倒序 单位是米

db.mapinfo.find({ "loc" : { "$near" : { "$geometry" :

{ "type" : "Point", "coordinates" : [118.783799, 31.979234] },

"$maxDistance" : 5000 } } }).limit(50);

Java存储,存储到mongo的地理坐标需要重新构建一个对象存放

导入架包

导入架包 构建对象 保存数据

Java查询


查询代码接下 查询代码

DBObjectquery=newBasicDBObject();

// DBObjectfildes= new BasicDBObject();

// fildes.put("id", true);

query.put(

"geomp",

newBasicDBObject("$nearSphere",newBasicDBObject("$geometry",

newBasicDBObject("type","Point").append(

"coordinates",newdouble[] {lng,lat}))

.append("$maxDistance",meter)));

if(StringFormatter.strIsNotNull(businessMongoEntity.getName())) {

Patternpattern= Pattern.compile(

"^.*"+businessMongoEntity.getName() +".*$",

Pattern.CASE_INSENSITIVE);

query.put("name",pattern);

}

Queryquery1=newBasicQuery(query);

query1.skip(fromcount);

query1.limit(page.getSize());

Listbme=template.find(query1,

BusinessMongoEntity.class);

inttotal=template.getCollection("businessMongoEntity").find(query).count();

// List list =

// template.getCollection("businessMongoEntity").find(query).skip(10).limit(20).toArray();

page.setRecords(bme);

page.setTotal(total);

returnpage;

Java更新

DBObjectdbObject=newBasicDBObject();

dbObject.put("registernum",businessMongoEntity.getRegisternum());

DBObjectdbObjectupdate=newBasicDBObject();

dbObjectupdate.put("imgurl",businessMongoEntity.getImgurl());

dbObjectupdate.put("openid",businessMongoEntity.getOpenid());

dbObjectupdate.put("geomp",businessMongoEntity.getGeomp());

dbObjectupdate.put("username",businessMongoEntity.getUsername());

dbObjectupdate.put("password",businessMongoEntity.getPassword());

//template.getCollection("businessMongoEntity").update(dbObject, dbObjectupdate);

Updateupdate= Update.update("geomp",businessMongoEntity.getGeomp())

.set("imgurl",businessMongoEntity.getImgurl())

.set("openid",businessMongoEntity.getOpenid())

.set("username",businessMongoEntity.getUsername()).set("password",businessMongoEntity.getPassword());

Queryquery=newBasicQuery(dbObject);

template.upsert(query,update, BusinessMongoEntity.class);

相关文章

  • SpringMVC下Mongo数据库查询距离最近的点

    A、插入地理坐标 db.mapinfo.insert({"address" : "厦门市天马路","loc" : ...

  • mongo分页查询方式

    闲下来,想了下准备总结下最近在mongo查询上所遇到的一些问题,我在这里罗列一下。 1.mongo使用shell的...

  • mongodb基本操作

    查询操作 进入mongo的admin数据库 查看当前数据库名 查看当前数据库版本 查看所有数据库 切换数据库(创库...

  • mongodb 使用笔记

    mongodb 使用 mongo常用命令 查看命令提示 切换/创建数据库 查询所有数据库 删除当前使用数据库 导入...

  • Mongodb 多进程高并发问题

    使用了6台24核48线程的服务器,同时对mongo数据库进行查询。并发数达到200以上,造成数据库经常崩溃,查询大...

  • mongoengine遇到的一些问题

    今天在使用django和mongo的交互,在查询mongo数据时查询不到完整的数据,折腾一下午得出这样的转换方法 ...

  • pymongo高级查询

    最近玩了一下mongdb,用pymongo连接mongodb的某些查询跟直接在mongo_cli有些不同。记录如下:

  • mongoose 空间查询

      工作中我用了Koa2做了后台,选用了mongo数据库。因为要用到空间查询显示当前地图视图的空间查询结果,经过一...

  • MongoDB的使用

    mongoDB 命令 在Linux下使用mongo进入MongoDB命令行 mongo 创建和使用数据库 > us...

  • 2021-11-04 springboot 如何实现使用反射实现

    springboot mongo query这样就支持直接传入mongo query查询语句来进行查询, 不用写复...

网友评论

      本文标题:SpringMVC下Mongo数据库查询距离最近的点

      本文链接:https://www.haomeiwen.com/subject/hfonrxtx.html