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.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.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 + MongoDB 使用示例

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

  8. CRL快速开发框架系列教程十二(MongoDB支持)

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

  9. React+Node.js+Express+mongoskin+MongoDB

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

随机推荐

  1. 【tomcat】HTTPS访问配置 + restful调用远程HTTPS绕过验证

     单向验证: 第一步: 生成key: keytool -genkey -alias mykey -keyalg RSA -keystore d:/key/testkey keytool -export ...

  2. react+redux教程(五)异步、单一state树结构、componentWillReceiveProps

    今天,我们要讲解的是异步.单一state树结构.componentWillReceiveProps这三个知识点. 例子 这个例子是官方的例子,主要是从Reddit中请求新闻列表来显示,可以切换reac ...

  3. 基于 getter 和 setter 撸一个简易的MVVM

    Angular 和 Vue 在对Angular的学习中,了解到AngularJS 的两个主要缺点: 对于每一次界面时间,Ajax 或者 timeout,都会进行一个脏检查,而每一次脏检查又会在内部循环 ...

  4. spring aop

    什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将 ...

  5. 【十大经典数据挖掘算法】AdaBoost

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 集成学习 集成学习(ensem ...

  6. 把UI图里的小图标制作成icon font

    一个交互比较多的UI图里面可能会有很多小图标,一般可用sprites图将多个小图标弄成一张大图,或者其它的办法,各种方法的比较可参见博主的另外一篇博客使用css3新属性clip-path制作小图标,本 ...

  7. C# async/await 使用总结

    今天搞这两个关键字搞得有点晕,主要还是没有彻底理解其中的原理. 混淆了一个调用异步方法的概念: 在调用异步方法时,虽然方法返回一个 Task,但是其中的代码已经开始执行.该方法在调用时,即刻执行了一部 ...

  8. 让Lua自己把文件夹下面的所有文件自动加载起来吧

    没有想到我也做了一回标题党.其实这里边说的自动还是有夸大其词的部分.其实只是指定文件夹,然后根据指定文件夹数据,加载目录下边的内容而已. 怎么来进行Lua文件的加载 一般情况下,相关的功能需要给他创建 ...

  9. Lightbox改造——支持滚轮缩放

    在做文章类型的web页时,经常会遇到要点开看大图的需求,LightBox2则是在众多产品中比较优秀的一款Jquery插件.配置就不细说了,今天我主要要分享的是:如何在点开大图后,可以通过鼠标滚轮来缩放 ...

  10. python之最强王者(5)——Nunber(数字)

    1.Python Number(数字) Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量 ...