经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
MongoDB
来源:cnblogs  作者:把盏北望  时间:2018/11/2 9:20:04  对本文有异议

1.什么是MongoDB?

官网介绍:MongoDB is a document database with the scalability and flexibility that you want with the querying and indexing that you need

维基百科:MongoDB是一种面向文档的数据库管理系统,由C++撰写而成

百度百科:MongoDB 是一个基于分布式文存储的数据库

2.为什么我要使用MongoDB

最近写一个项目,很多业务需要在调度中多线程处理。使用的是LINQ+EF,数据库是msSQL,中间业务不算复杂,关系七八张表,中间有IO操作,GIT操作,CMD命令操作等  ..速度实在是没有办法忍受.

大概几千个文件提交需要执行30分钟。。。。  

后来了解到有MongoDB这种数据库,性能高,灵活,扩展性高等等,再根据我们代码和业务的实际情况,就用准备测试一下实际情况

然后根据业务和一些性能考虑将调度代码分成三部分,

再次测速的几个文件提交只花了十几秒钟的时间。

MongoDB功不可没。

 3.下载

官网下载就可以了 https://www.mongodb.com/

4.安装

一直点下一步就好了

5.使用

贴一点代码,非真实项目中代码,还有需要修改的地方,比如反射没使用委托等

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MongoDB.Driver;
  7.  
  8. namespace Model
  9. {
  10. public static class MongoDBHelperNow<T>
  11. {
  12.  
  13. /// <summary>
  14. /// 数据库连接
  15. /// </summary>
  16. static MongoClient client = new MongoClient("mongodb://127.0.0.1:27017");//ConstDefine.MongoDBConnectionString
  17. /// <summary>
  18. /// 数据库名
  19. /// </summary>
  20. private static readonly IMongoDatabase _gitDatabase = client.GetDatabase("Blog");//"Git"ConstDefine.MongoDBGitTableName
  21.  
  22. public static IMongoDatabase GitDb { get { return _gitDatabase; } }
  23.  
  24. public static IMongoCollection<T> GitTable(string keyname) => _gitDatabase.GetCollection<T>(keyname);
  25.  
  26. private static string GetTableName() => typeof(T).ToString().Split('_')[1];
  27.  
  28. #region 增
  29. public static void InsertOne(T entity) => GitTable(GetTableName()).InsertOne(entity);
  30. public static void InsertOneAsync(T entity) => GitTable(GetTableName()).InsertOneAsync(entity);
  31. public static void InsertList(List<T> entity) => GitTable(GetTableName()).InsertMany(entity);
  32. public static void InsertListAsync(List<T> entity) => GitTable(GetTableName()).InsertManyAsync(entity);
  33. #endregion
  34. #region 删
  35. public static void DeleteOne(Expression<Func<T, bool>> whereLambda) => GitTable(GetTableName()).FindOneAndDelete(whereLambda);
  36. public static void DeleteOneAsync(Expression<Func<T, bool>> whereLambda) => GitTable(GetTableName()).FindOneAndDeleteAsync(whereLambda);
  37. public static void DeleteList(Expression<Func<T, bool>> whereLambda) => GitTable(GetTableName()).DeleteMany(whereLambda);
  38. public static void DeleteListAsync(Expression<Func<T, bool>> whereLambda) => GitTable(GetTableName()).DeleteManyAsync(whereLambda);
  39. #endregion
  40. #region 查
  41. public static T FindOne(Expression<Func<T, bool>> whereLambda) => GitTable(GetTableName()).Find(whereLambda).FirstOrDefault();
  42. public static List<T> FindList(Expression<Func<T, bool>> whereLambda) => GitTable(GetTableName()).Find(whereLambda).ToList();
  43. #endregion
  44. #region 改
  45. public static T ReplaceOne(Expression<Func<T, bool>> whereLambda,T entity) => GitTable(GetTableName()).FindOneAndReplace(whereLambda, entity);
  46. public static Task<T> ReplaceOneAsync(Expression<Func<T, bool>> whereLambda, T entity) => GitTable(GetTableName()).FindOneAndReplaceAsync(whereLambda, entity);
  47. #endregion
  48. }
  49. }   
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号