c# MongoDB 经纬度应用示例

时间:2022-02-23 07:53:46
class Program 
    { 
        static string mongodb = "mongodb://127.0.0.1:27017"; 
        static string database = "dbCardInfo"; 
        static string tblName = "fcd1"; 
        static MongoCollection<BsonDocument> table; 
        static void Main(string[] args) 
        { 
            MongoClient client; 
            MongoServer server; 
            MongoDatabase db;
            MongoClientSettings setting = new MongoClientSettings(); 
            setting.MaxConnectionPoolSize = 1000; 
            setting.MinConnectionPoolSize = 500;
            client = new MongoClient(mongodb); 
           
            server = client.GetServer(); 
            db = server.GetDatabase(database); 
            table = db.GetCollection(tblName);
  #region 索引
            //IndexKeysDocument doc = new IndexKeysDocument();//新建索引
            //2d 平面坐标索引,适用于基于平面的坐标计算。也支持球面距离计算,不过官方推荐使用2dsphere索引
            //BsonValue value = BsonValue.Create("2d");//创建2d索引
            //2dsphere 几何球体索引,适用于球面几何运算
            //不过,只要坐标跨度不太大(比如几百几千公里),这两个索引计算出的距离相差几乎可以忽略不计
            //BsonValue value = BsonValue.Create("2dsphere");//创建2d索引
            //doc.Add("loc", value);//loc为数据库中2d索引的对象名称
            //table.CreateIndex(doc);//创建索引
            #endregion
            double y = 26.0623344427; 
            double x = 119.2916107177; 
            double maxDistance = 0.2;//单位公里(千米) 
            //6378137:地球半径,单位:米 
            IMongoQuery query = Query.WithinCircle("loc", x, y, maxDistance / (6378137 / 1000.0), true); 
            IMongoQuery query1 = Query.Near("loc", x, y, maxDistance / (6378137 / 1000.0), true);
            //var finds = table.Find(query); 
                var finds = table.Find(query1); 
                int count = 0;
                Parallel.ForEach(finds, (item) => 
                { 
                    Interlocked.Increment(ref count); 
                    Debug.WriteLine(item["loc"]["lat"]+","+ item["loc"]["lng"]); 
                }); 
        
            Console.WriteLine("over"); 
            Console.ReadLine(); 
        }
        static void Search(IMongoQuery query) 
        { 
            List<LbsItem> cards = new List<LbsItem>();
            try 
            { 
                MongoCursor<BsonDocument> res = table.Find(query).SetLimit(100000).SetSkip(1500000); 
                int count = 0; 
                var start = DateTime.Now; 
                Parallel.ForEach(res, (item) => 
                { 
                    Interlocked.Increment(ref count); 
                }); 
                double etime = (DateTime.Now - start).TotalSeconds; 
                Console.WriteLine(count + ":" + etime + ";" + count / etime); 
            } 
            catch (Exception ex) 
            { 
                LogHelper.Error(ex); 
            }
        } 
    }
 
public class LbsItem 
    { 
        /// <summary> 
        /// 终端标识 
        /// </summary> 
        public string tid 
        { 
            get; set; 
        } 
        /// <summary> 
        /// 
        /// </summary> 
public GeoJsonPoint<GeoJson2DGeographicCoordinates> loc { get; set; }
        //或:public Location loc 
        { 
            get;set; 
        }         
        /// <summary> 
        /// 定位时间 
        /// </summary> 
        public DateTime time 
        { 
            get; set; 
        }
}
    public class Location 
    { 
        /// <summary> 
        /// 经度 
        /// </summary> 
        public double lng 
        { 
            get; set; 
        } 
        /// <summary> 
        /// 纬度 
        /// </summary> 
        public double lat 
        { 
            get; set; 
        } 
    }

c# MongoDB 经纬度应用示例的更多相关文章

  1. Node&period;js与MongoDB的基本连接示例

    Node.js与MongoDB的基本连接示例 前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务 ...

  2. Mongodb aggregation 基本操作示例

    MongoDB二个主要的操作:一个是查询,另一个是统计.对于查询而言,主要是find()方法,再配合Filters组合多个查询条件. 对于统计而言,则主要是aggregate操作,比如 group.s ...

  3. PHP操作MongoDB数据库的示例

    http://www.jquerycn.cn/a_8137 本节内容:PHP操作MongoDB数据库的简单示例. Mongodb的常用操作参看手册,php官方的http://us2.php.net/m ...

  4. MongoDB安装配置示例

    参考 http://www.runoob.com/mongodb/mongodb-window-install.html http://www.cnblogs.com/lecaf/archive/20 ...

  5. MongoDB学习(2)—Node&period;js与MongoDB的基本连接示例

    前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务,在test数据库中插入一条实例数据: db. ...

  6. MongoDB MapReduce 的示例。

    // JavaScript source code db.runCommand({ mapreduce: "page", map: function Map() { emit( t ...

  7. Spring Boot &plus; MongoDB 使用示例

    本文分别使用 MongoRepository 和 MongoTemplate 实现 MongoDB 的简单的增删改查 本文使用 docker 安装 MongoDB: 使用示例 application. ...

  8. CRL快速开发框架系列教程十二&lpar;MongoDB支持&rpar;

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. React&plus;Node&period;js&plus;Express&plus;mongoskin&plus;MongoDB

    首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...

随机推荐

  1. IMEI串号

    IMEI串号就是国际移动设备身份码,是电子设备的唯一身份证,由于它的唯一性,它可以用来查询电子设备的保修期还有产地,可以说用处直逼人民的身份证啊! 在拨号键盘页面  输入[*#06#]五个字符

  2. NOIP 2011 Day 1 部分题解 &lpar;Prob&num;1 and Prob&num;2&rpar;

    Problem 1: 铺地毯 乍一看吓cry,地毯覆盖...好像是2-dims 线段树,刚开头就这么难,再一看,只要求求出一个点,果断水题,模拟即可.(注意从标号大的往小的枚举,只要有一块地毯符合要求 ...

  3. &lbrack;Angular-Scaled Web&rsqb; 7&period; Refactor code into Models

    In the previous code, both categories and bookmarks are binded to $rootscope, or let says the same s ...

  4. java--文件过滤器和简单系统交互

    一.文件过滤器 /** * @Title: getFileByFilter * @Description: 根据正则rege获取给定路径及其子路径下的文件名(注意递归的深度不要太大) * @param ...

  5. android插件化-apkplugdemo源代码阅读指南-10

    阅读本节内容前可先了解 apkplug基础教程 本教程是基于apkplug V1.6.8 版本号编写  最新开发方式以官网为准 可下载最新的apkplugdemo源代码http://git.oschi ...

  6. 最大流量dinci模板

    我们知道.增广路径EK时间是在充电算法的O(n*m^2).找到最短增广路径的时间复杂度为O(m*n^2).这样的时间复杂度主要是寻找扩充道路. 这里也有一个演示Dinci算法,使用BFS层次结构图,然 ...

  7. SQLCMD的介绍

    原文:SQLCMD的介绍 sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -i filename.sql 下面的内容是详细介绍sqlcmd的,有兴趣的朋友可以 ...

  8. 关于Oracle游标out参数多层调用的BUG,ORA-06504

    数据库版本 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit 测试代码 declare p_cur sys_refcu ...

  9. JS如何捆绑TypeScript声明文件

    前话 TypeScript是JavaScript类型的超集 这是TypeScript的文档介绍的一句话,那么他们存在联系呢? 我的理解是,TypeScript在JavaScript基础上引入强类型语言 ...

  10. IP地址分配机构

    IP地址分配机构 全球ip地址分配机构 互联网编号分配机构(IANA,Internet Assigned Numbers Authority)负责分配和规划IP地址,以及对TCP/UDP公共服务的端口 ...