回到目录

Mongodb这个数据库很不错,它的方法也不错,为了实现坐标功能,它甚至为我们提供了geo里的一些算法,帮助我们通过某个点去位置和查找N个附近的点。

表面

在您存储地理数据和编写查询条件前,首先,您必须选择表面类型,这将被用在计算中。您所选择的类型将会影响您的数据如何被存储,建立的索引的类型,以及您的查询的语法形式。

MongoDB提供了两种表面类型:

球面

如果需要计算地理数据就像在一个类似于地球的球形表面上,您可以选择球形表面来存储数据,这样就可以使用 2dsphere 索引。

您可以按照坐标轴:经度,纬度 的方式把位置数据存储为GeoJSON对象。GeoJSON的坐标参考系使用的是 WGS84 数据。

平面

如果需要计算距离,就像在一个欧几里德平面上,您可以按照正常坐标对的形式存储位置数据并使用 2d索引。

测试类

    public class Zoo : NoSqlEntity
{
public string title { get; set; }
public double[] loc { get; set; } }

测试数据

        [TestMethod]
public void Addloc()
{
for (int i = -; i < ; i += )
MongoDbClient.MongoManager<Zoo>.Instance.InsertOne(new Zoo { title = "北京" + i, loc = new double[] { i, i } });
}

数据添加后的列表

查找你需要的附近的点

       [TestMethod]
public void Findloc()
{
var filter = Builders<Zoo>.Filter.Near(i => i.loc, , , maxDistance: );
var result = MongoDbClient.MongoManager<Zoo>.Instance.Find(filter);
foreach (var item in result.ToList())
{
Console.WriteLine(item.title);
}
}

回到目录

为数据集合的坐标字段添加索引

最新文章

  1. 继承 Bean 配置
  2. 四则运算&lt;3&gt;单元测试
  3. C++ builder 操作Excel方法(据网上资料整理)
  4. javax.servlet不存在的问题
  5. (转载)Windows下手动完全卸载Oracle
  6. 有关android安全性的问题--代码混淆
  7. EBS form 之间跳转实现(form 关闭)
  8. 存储过程 传 datatable
  9. oracle入坑日记&lt;四&gt;表空间
  10. Delphi过程函数传递参数的几种方式
  11. Sequel Pro for Mac(MySQL 数据库管理工具)破解版安装
  12. 前端学PHP之面向对象系列第四篇-----关键字
  13. Express模版引擎hbs备忘
  14. TCP粘包, UDP丢包, nagle算法
  15. 解决 php提交表单到当前页面,刷新会重复提交 的问题
  16. getContentLength() 指为 -1 的解决办法
  17. 自己写的一个操作Mysql的简单的实例
  18. Python开发【Django】:图片验证码、KindEditor
  19. json.dumps与json.dump的区别 json.loads与json.load的区别(简洁易懂)
  20. Linux中epoll+线程池实现高并发

热门文章

  1. syncer.go
  2. 【k短路&amp;A*算法】BZOJ1975: [Sdoi2010]魔法猪学院
  3. BZOJ_3191_[JLOI2013]卡牌游戏_概率DP
  4. 你可能忽略的js类型转换
  5. java的Integer与int的比较
  6. python——报错ImportError:DLL load failed with error code -1073741795的解决方式
  7. 线上应用调试利器 --Arthas
  8. numpy C语言源代码调试(三)
  9. 代码转换为html显示
  10. SpringCloud学习系列之四-----配置中心(Config)使用详解