zoukankan      html  css  js  c++  java
  • Asp.net Core 项目中如何使用 MongoDB 数据库

    内容来源 https://blog.csdn.net/qq_26900081/article/details/83272132

    一、添加依赖

    1、MongoDB.Driver

    2、MongoDB.Bson

    二、配置服务到StartUp.cs

    public void ConfigureServices(IServiceCollection services)
    {
      //添加mongodb依赖
      string mongoConnectionString = Configuration.GetSection("Mongo:ConnectionString").Value;
      services.AddSingleton(new MongoClient(mongoConnectionString));
    }

    三、添加配置到appsettings.json

    {
      "Mongo": {
        "ConnectionString": "mongodb://账号:密码@服务器IP:27017/默认数据库名称"
      }
    }

    四、自己编写的一个帮助类;这里只公布一部分。 其余的可以自行拓展

    public class MongoBase<T>: IMongoBase<T> //接口可自己根据此类抽象出来
    {
    
      private IMongoCollection<T> mongoClient;
      /// <summary>
      /// 
      /// </summary>
      /// <param name="client"></param>
      /// <param name="name">MongoDB的表名</param>
      public MongoBase(MongoClient client, string name)
      {
        var database = client.GetDatabase("数据库名称");
        mongoClient = database.GetCollection<T>(name);
      }
    
      #region 新增单个 + void InsertOne(T entity)
      /// <summary>
      /// 新增单个
      /// </summary>
      /// <param name="entity"></param>
      public void InsertOne(T entity)
      {
        mongoClient.InsertOne(entity);
      }
      #endregion
    
      #region 批量新增 + void InsertMany(IEnumerable<T> entity)
      /// <summary>
      /// 批量新增
      /// </summary>
      /// <param name="entity"></param>
      public void InsertMany(IEnumerable<T> entity)
      {
        mongoClient.InsertMany(entity);
      }
      #endregion
    
      #region 查找第一个 + T FindFirst(FilterDefinition<T> filter,FindOptions option = null)
      /// <summary>
      /// 查找第一个
      /// </summary>
      /// <param name="filter"></param>
      /// <param name="option"></param>
      /// <returns></returns>
      public T FindFirst(FilterDefinition<T> filter, FindOptions option = null)
      {
        return mongoClient.Find(filter, option).FirstOrDefault();
      }
      #endregion
    
      #region 查找多个 + List<T> FindList(FilterDefinition<T> filter, FindOptions option = null)
      /// <summary>
      /// 查找多个
      /// </summary>
      /// <param name="filter"></param>
      /// <param name="option"></param>
      /// <returns></returns>
      public List<T> FindList(FilterDefinition<T> filter, FindOptions option = null)
      {
        return mongoClient.Find(filter, option).ToList();
      }
      #endregion
    
    }

    五、编写一个MongoDB集合 

    这里使用一个叫UserInfo的MongoDB数据库集合做测试

    public class UserInfoService : MongoBase<UserInfo>
    {
      public UserInfoService(MongoClient client) : base(client, "UserInfo")
      { }
    
    } 

    六、在Controller中使用

    public class MongoController : Controller
    {
      private UserInfoService userInfo;
    //使用DI注入;
      public MongoController(UserInfoService _userInfo)
      {
        this.userInfo = _userInfo;
      }
      public IActionResult Index()
      {
        UserInfo user = userInfo.FindFirst(Builders<UserInfo>.Filter.Eq(p => p.Name, "Test"));
        userInfo.InsertOne(new UserInfo() { Name="Test", UserID=222 });
    
        user = userInfo.FindFirst(Builders<UserInfo>.Filter.Eq(p => p.Name, "Test"));
        return View();
      }
    }
     
  • 相关阅读:
    我的第一个NHibernate示例
    Div+CSS实现表格滚动,JS隐藏和显示Div例子
    VUE 生命周期
    sql AND和OR
    vcloak 隐藏表达式
    sql 多表联查
    SQL 语句解析
    jenkins 使用
    sql 排序(order by)
    sql 基础查询
  • 原文地址:https://www.cnblogs.com/Tanghongchang/p/10738159.html
Copyright © 2011-2022 走看看