SpringMVC下MongoDB查詢周圍商家距離最近的點

這邊文章我在簡書有發表過一次,最近有時間把它們整理到csdn這邊,方便管理查看。

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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章