c# 操作MongoDB

项目要求:将外部数据同步到mongodb需要安装mongodb驱动包:MongoDB.Driver ,此处用到的版本是2.12.3实现代码:using MongoDB.Bson;using MongoDB.Driver;using System;using System.Collections.Generic;using System.Text;using System.Threading.Tasks;namespace DS_Repository{ publi
摘要由CSDN通过智能技术生成

项目要求:将外部数据同步到mongodb

需要安装mongodb驱动包:MongoDB.Driver ,此处用到的版本是2.12.3

实现代码:

using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace DS_Repository
{
    public class MongoDbHelper
    {
        #region 属性及变量
        /// <summary>
        /// 服务器地址
        /// </summary>
        private string _connString; // "mongodb://127.0.0.1:27017"

        /// <summary>
        /// 数据库名称
        /// </summary>
        private string _databaseName; // "Test"

        /// <summary>
        /// 集合名称
        /// </summary>
        private string _collectionName;

        #endregion

        #region 构造函数

        /// <summary>
        /// 
        /// </summary>
        /// <param name="connString">连接字符串</param>
        /// <param name="databaseName">数据库名称</param>
        public MongoDbHelper(string connString, string databaseName)
        {
            this._connString = connString;
            this._databaseName = databaseName;

            CreateClient();
        }
        #endregion

        #region 链接数据库
        private IMongoClient _mongoclient { get; set; }
        private IMongoClient CreateClient()
        {
            if (_mongoclient == null)
            {
                var settings = MongoClientSettings.FromConnectionString(_connString);
                settings.MaxConnectionPoolSize = 500;
                _mongoclient = new MongoClient(settings);
            }
            return _mongoclient;
        }

        /// <summary>
        /// 返回数据库对象
        /// </summary>
        private IMongoDatabase _database { get { return _mongoclient.GetDatabase(_databaseName); } }
        /// <summary>
        /// 返回数据库对象
        /// </summary>
        public IMongoDatabase GetDatabase()
        {
            return _database;
        }

        /// <summary>
        /// 设置当前需要操作的集合名称
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public void SetCurrentCollection(string collName)
        {
            _collectionName = collName;

            var db = _database;
            var coll = db.GetCollection<dynamic>(_collectionName);
            if (coll == null)
            {
                db.CreateCollection(_collectionName);
            }

        }

        /// <summary>
        /// 获取集合对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public IMongoCollection<T> GetCollection<T>() where T : class, new()
        {
            return _database.GetCollection<T>(_collectionName);
        }
        #endregion

        #region 数据操作

        #region +Add 添加一条数据
        /// <summary>
        /// 添加一条数据
        /// </summary>
        /// <param name="t">添加的实体</param>
        /// <param name="host">mongodb连接信息</param>
        /// <returns></returns>
        public bool Add<T>(T t) where T : class, new()
        {
            try
            {
                var client = _database.GetCollection<T>(_collectionName);
                client.InsertOne(t);
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region +AddAsync 异步添加一条数据
        /// <summary>
        /// 异步添加一条数据
        /// </summary>
        /// <param name="t">添加的实体</param>
        /// <param name="host">mongodb连接信息</param>
        /// <returns></returns>
        public async Task<bool> AddAsync<T>(T t) where T : class, new()
        {
            try
            {
                var client = _database.GetCollection<T>(_collectionName);
                await client.InsertOneAsync(t);
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region +InsertMany 批量插入
        /// <summary>
        /// 批量插入
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="t">实体集合</param>
        /// <returns></returns>
        public bool InsertMany<T>(List<T> t) where T : class, new()
        {
            try
            {
                var client = _database.GetCollection<T>(_collectionName);
                client.InsertMany(t);
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region +InsertManyAsync 异步批量插入
        /// <summary>
        /// 异步批量插入
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="t">实体集合</param>
        /// <returns></returns>
        public async Task<bool> InsertManyAsync<T>(List<T> t) where T : class, new()
        {
            try
            {
                var client = _database.GetCollection<T>(_collectionName);
                await client.InsertManyAsync(t);
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region +Update 修改一条数据
        /// <summary>
        /// 修改一条数据
        /// </summary>
        /// <param name="t">添加的实体</param>
        /// <param name="host">mongodb连接信息</param>
        /// <returns></returns>
        public UpdateResult Update<T>(T t, string id, bool isObjectI
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zouzh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值