使用.Net+非关系型数据库MongoDB 实现LBS商家按距离排序_按离我最近排序
2018-01-13 10:55:21来源:http://www.cnblogs.com/zhuhaoliang/p/8269518.html作者:NoSQL_博客园人点击
前言:
在使用美团点外卖,看电影,找好吃的时候,经常会注意到软件有一个按距离排序,找离我最近的商家,心中有一些疑问,.Net+Sql Server是如何做到这一需求的?发现使用关系型数据库Sql Server实现这一需求是有些问题的,需要一系列经纬度数学公式的计算,效率就不高了。近期了解学习了下非关系型数据库MongoDB,发现MongoDB的地理位置索引,可以完美的解决这个问题
1. 本机部署安装MongoDB环境
首先去官网下载Windows安装包:https://www.mongodb.org/downloads
一般情况下选择默认的64位即可(除非你的主机是32位),下载后,安装到C盘根目录 C:/MongoDB/,完成后,进入该目录,新建data和logs两个文件夹,并在logs目录下再新建个mongodb.log。
此时的目录结构为:
然后打开命令提示符(CMD),Windows8.1的用户需要用管理员身份打开。执行以下命令:
mongod.exe --dbpath C:/MongoDB/Data --logpath=C:/MongoDB/Logs/mongodb.log --logappend
2. 启动MongoDB
新开一个CMD,输入 cd C:/MongoDB/Server/3.4/bin 回车,打开MongoDB目录
输入 mongo 回车,启动MongoDB
此时打开浏览器,输入 http://127.0.0.1:27017/ ,浏览器如果出现:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
证明MongoDB启动成功
3. 打开VS,使用.Net链接操作MongoDB
① 新建项目,引用2个需要的dll
② 准备各种配置,毫无疑问就是敲代码
③ 新建一个商户实体类
④ 编写插入代码,先插入100条测试数据
随机插入100条商户数据供测试使用
然后,cmd查询下mongodb,是不是100条数据已经插入完毕?
⑤建立MongoDB地理位置索引
查看地理位置是否创建完毕
⑥ 先用MongoDB的查询语句,查询下是否可以成功得到数据
正常返回,下边使用C#啦
⑤ 测试数据插入完毕,接下来就是实现功能,按距离排序读取最近10个商家
F5走一个程序,看看效果~
OK,得到数据,且这些是按距离[40,40],按从近到远的顺序,得到的10条商家数据,json都有了,你在C#还是在前端解析,都是无压力了!~~~
到此圆满结束!
相关文章
- Spring Security Oauth2.0 实现短信验证码登录
- 使用com.fasterxml.jackson将对象转换为JSON字符串或
- 使用Lucene和IKAnalyzer做简单的字符串分词
- 连接数据库超时设置autoReconnect=true
- shiro页面标签shiro:principal的使用
- 关于CXF WebService服务中Message类的使用(示例)
- Spring的JNDI数据源连接池配置示例及Spring对JNDI实现
- Mysql中文汉字转拼音的实现(每个汉字转换全拼)
- 使用wampserver部署的织梦站点无法登录后台
- 使用Lucene和IKAnalyzer做字符串分词的实例