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是设置的索引。