C# MongoDB添加索引
场景:
在最近的项目中,用到了Mongodb,用它来保存大量工业数据。同时是会根据用户自动建立对应的数据表。这要求同时建立索引来加快查询。
解决:
1.在Nuget包中查询“mongocsharpdriver”,进行安装,这个安装包不同于MongoDB.Driver,这个包包括了MongoDB.Driver、MongoDB.Bson等。同时可以对数据库中每个表进行更加细致的操作,比如index,cursor等。而MongoDB.Driver只能满足一般的增删改查。
2.添加如下代码:
1 public void AddIndex(string collection)
2 {
3 MongoDatabase mongoDatabase = _mongoClient.GetServer().GetDatabase(_databaseSettings.DatabaseName);
4 var datacollection = mongoDatabase.GetCollection(collection);
5 var allindex = datacollection.GetIndexes();
6
7 if (!datacollection.IndexExistsByName("bTime_-1_eTime_-1_devId_1"))
8 {
9 var as_index = new IndexKeysBuilder().Descending("bTime");
10 as_index.Descending("eTime");
11 as_index.Ascending("devId");
12 datacollection.CreateIndex(as_index);
13 }
14
16 }
3.这里的 Descending() 和 Ascending() 可以选择字段添加升序还是降序索引,最后通过createIndex来添加索引。
4.用Navicat查看数据库下的索引情况:

成功生成了索引。
5.最后用查询语句测试一下,有没有命中索引,主要用explain()语句,查看是否命中:
可以看到执行一个查询后,inputStage中的indexName是设置的索引。
C# MongoDB添加索引的更多相关文章
- 给MongoDB添加索引
用过数据库的都知道,数据库索引与书籍的索引类似,都是用来帮助快速查找的. MongoDB的索引跟关系型数据库的索引几乎一致. 1. 索引的创建 mongodb采用ensureInd ...
- mongodb添加索引
mongodb可以添加多列索引 稠密索引:该列中即使有null值也能给你查出来 稀疏索引:该列中查不出包含null值的列 二叉树索引是由码放的顺序的,哈希则是散列,相邻的数字,排列顺序并不一定紧邻
- Ecstore1.2启用mongodb添加索引
配置config(连接mongo) mongo define('KVSTORE_STORAGE', 'base_kvstore_mongodb'); define('MONGODB_SERVER_CO ...
- MongoDB的索引
一.索引详讲 索引是什么,索引就好比一本书的目录,当我们想找某一章节的时候,通过书籍的目录可以很快的找到,所以适当的加入索引可以提高我们查询的数据的速度. 准备工作,向MongoDB中插入20000条 ...
- MongoDB数据库索引
前面的话 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录.这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查 ...
- MongoDB 创建索引的语法
1.为普通字段添加索引,并且为索引命名 db.集合名.createIndex( {"字段名": 1 },{"name":'idx_字段名'}) 说明: (1)索 ...
- 五、MongoDB的索引
一.MongoDB的下载.安装与部署 二.MongoDB的基础知识简介 三.MongoDB的创建.更新和删除 四.MongoDB的查询 五.MongoDB的索引 1.简介 它就像是一本书的目录,如果没 ...
- 学习MongoDB 二:MongoDB添加、删除、修改
一.简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSQL数据库产品中最热门的一种.数据被分组存储在数据集中,被称为一个集合(Collenction)和对于存储在MongoDB ...
- MongoDB-2:MongoDB添加、删除、修改
一.简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSQL数据库产品中最热门的一种.数据被分组存储在数据集中,被称为一个集合(Collenction)和对于存储在MongoDB ...
随机推荐
- windows+R键的应用
windows+R:然后输入以下几个命令 1.cmd :用于Windows命令行操作,比如:ping某个网络,看看是不是通的,或者directory等等Windows命令行操作 2.远程桌面连接:ms ...
- 项目启动报错:Redis health check failed
最近是重新开发整个项目,在上线测试的时候发现这个问题. 项目环境:SpringBoot2.x+Consul+Redission+Maven 报错的信息如下: o.s.b.a.redis.RedisHe ...
- 学习Qt Charts - 不使用UI的情况下使用QTCharts
新建一个Qt Widgets Application项目,不添加UI文件,如下图: 建立工程后,在.pro文件中添加: QT += charts 然后在.h文件中添加: #include " ...
- 20201123 实验三《python程序设计》实验报告
20201123 2020-2021-2 <python程序设计>实验三报告 课程:<Python程序设计>班级:2011姓名:晏鹏捷学号:20201123实验教师:王志强实验 ...
- Func委托与表达式树Expression
最近在写ORM框架,其中遇到一个难点,就是作为框架调用方如何将查询条件传入框架内.其中就用到了Expression. Func委托 要Expression先要了解Func委托,Func委托的样式是: ...
- 14、iptables_nat源地址转换(内网共享上网)
14.1.环境说明: 1.架构图:
- POJ 2002 二分 计算几何
根据正方形对角的两顶点求另外两个顶点公式: x2 = (x1+x3-y3+y1)/2; y2 = (x3-x1+y1+y3)/2; x4= (x1+x3+y3-y1)/2; y4 = (-x3+x1+ ...
- AcWing 1290. 越狱
监狱有连续编号为1~n的n个房间,每个房间关押一个犯人.有 M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人信仰的宗教相同,就可能发生越狱.求有多少种状态可能发生越狱. #include< ...
- Java:Java实例化(new)过程
实例化过程(new) 1.首先去JVM 的方法区中区寻找类的class对象,如果能找到,则按照定义生成对象,找不到 >>如下2.所示 2.加载类定义:类加载器(classLoader)寻找 ...
- php结合redis实现高并发下的抢购、秒杀功能 (转)
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易 ...