C#操作mongodb cctv5体育节目表

   2023-02-09 学习力0
核心提示:// MongoDB连接串,以[mongodb://]开头。这里,我们连接的是本机的服务string connectionString = "mongodb://192.168.1.170";// 连接到一个MongoServer上MongoServer server = MongoServer.Create(connectionString);MongoDatabase db = server.GetDatabase(
 // MongoDB连接串,以[mongodb://]开头。这里,我们连接的是本机的服务
            string connectionString = "mongodb://192.168.1.170";
            // 连接到一个MongoServer上
            MongoServer server = MongoServer.Create(connectionString);
            MongoDatabase db = server.GetDatabase("test");
            MongoCollection collection = db.GetCollection("user");
            // 创建一个employee
            BsonDocument employee = new BsonDocument{
                                      { "name", "zhangsan" },
                                      { "title", "hello" },
                                      { "description", "hi"}
                                   };
            collection.Insert(employee);

            var query = new QueryDocument("name", "entlib.com");
            foreach (BsonDocument emp in collection.FindAs<BsonDocument>(query))
            {
                // BsonValue有两种取值方式,一个是AsXXX,一个是ToXXX
                System.Diagnostics.Debug.WriteLine(string.Format("name:{0}\title:{1}\tdesc:{2}\tcount:{3}",
                emp["name"].AsString, emp["title"].ToString(),
                emp["description"].AsString,
                collection.Count().ToString()));
            }

            System.Diagnostics.Debug.Write("------end-----");
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MongoDB.Driver;
using MongoDB.Bson;
using MongoDB.Driver.Builders;
using NUnit.Framework;

namespace MongoDBHelper
{
    [TestFixture]
    public class MongoDBHelper : Base
    {
        protected static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(Base));

        private static string databaseName
        {
            get { return System.Configuration.ConfigurationManager.AppSettings["mongodb_database"]; }
        }

        #region 初始化MongoServer
        /// <summary>
        /// 初始化MongoServer
        /// </summary>
        private static MongoServer server
        {
            get
            {
                if (System.Configuration.ConfigurationManager.AppSettings["mongodb_state"] == "1")
                    return MongoServer.Create(System.Configuration.ConfigurationManager.AppSettings["mongodb_connectionstring"]);
                else
                    return null;
            }
        }
        #endregion

        #region  获取当前MongoDatabase
        /// <summary>
        /// 获取当前MongoDatabase
        /// </summary>
        private static MongoDatabase database
        {
            get
            {
                if (server == null) return null;
                server.Connect(TimeSpan.FromSeconds(5));
                if (!server.DatabaseExists(databaseName))
                {
                    var databaseSettings = server.CreateDatabaseSettings(databaseName);
                    return server.GetDatabase(databaseSettings);
                }
                else
                {
                    return server.GetDatabase(databaseName);
                }
            }
        }
        #endregion

        #region 获取当前MongoCollection
        /// <summary>
        /// 获取当前MongoCollection
        /// </summary>
        /// <param name="collectionName"></param>
        /// <returns></returns>
        public static MongoCollection<BsonDocument> GetMongoCollections(string collectionName)
        {
            if (server == null) return null;
            using (server.RequestStart(database))//开始连接数据库。
            {
                if (!database.CollectionExists(collectionName))
                {
                    database.CreateCollection(collectionName);
                }
                return database.GetCollection<BsonDocument>(collectionName);
            }
        }
        #endregion

        #region 插入
        /// <summary>
        /// Insert(Entity)
        /// </summary>
        /// <typeparam name="T">Entity</typeparam>
        /// <param name="collectionName">collectionName</param>
        /// <param name="entity">Entity</param>
        /// <returns>SafeModeResult</returns>
        public static SafeModeResult InsertOne<T>(string collectionName, T entity)
        {
            try
            {
                MongoCollection collection = GetMongoCollections(collectionName);
                return collection != null ? collection.Insert(entity) : null;
            }
            catch (Exception ex)
            {
                logger.Error(ex); return null;
            }
        }

        /// <summary>
        /// Insert(List)
        /// </summary>
        /// <typeparam name="T">Entity</typeparam>
        /// <param name="collectionName">collectionName</param>
        /// <param name="entitys">IEnumerable</param>
        /// <returns>IEnumerable<SafeModeResult></returns>
        public static IEnumerable<SafeModeResult> Insert<T>(string collectionName, IEnumerable<T> list)
        {
            try
            {
                MongoCollection collection = GetMongoCollections(collectionName);
                return collection != null ? collection.InsertBatch<T>(list) : null;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return null;
            }
        }

        #endregion

        #region 更新
        /// <summary>
        /// Update(Entity)
        /// </summary>
        /// <typeparam name="T">Entity</typeparam>
        /// <param name="collectionName">collectionName</param>
        /// <param name="entity">Entity</param>
        /// <returns>SafeModeResult</returns>
        public static SafeModeResult Update<T>(string collectionName, T entity)
        {
            try
            {
                MongoCollection collection = GetMongoCollections(collectionName);
                return collection != null ? collection.Save(entity) : null;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return null;
            }
        }
        /// <summary>
        /// Update(Query,Update)
        /// </summary>
        /// <param name="collectionName">collectionName</param>
        /// <param name="query">query</param>
        /// <param name="update">update</param>
        /// <returns>SafeModeResult</returns>
        public static SafeModeResult Update(string collectionName, IMongoQuery query, IMongoUpdate update)
        {
            try
            {
                MongoCollection collection = GetMongoCollections(collectionName);
                return collection != null ? collection.Update(query, update, UpdateFlags.Multi) : null;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return null;
            }
        }

        /// <summary>
        /// Update(Query,Update)
        /// </summary>
        /// <param name="dic_EQ">Query</param>
        /// <param name="dic_Set">Update</param>
        /// <param name="collectionname">collection</param>
        /// <returns>SafeModeResult</returns>
        public static SafeModeResult Update(Dictionary<string, BsonValue> dic_Query, Dictionary<string, BsonValue> dic_Set, string collectionName)
        {
            QueryDocument query = new QueryDocument(dic_Query);
            UpdateBuilder updatebuilder = new UpdateBuilder();
            foreach (var item in dic_Set)
            {
                updatebuilder.Set(item.Key, item.Value);
            }
            return Update(collectionName, query, updatebuilder);
        }
        #endregion

        #region 删除
        /// <summary>
        /// Delete(Query)
        /// </summary>
        /// <param name="dic">Query</param>
        /// <param name="collectionName">collectionName</param>
        /// <returns></returns>
        public static SafeModeResult Delete(Dictionary<string, BsonValue> dic, string collectionName)
        {
            QueryDocument query = new QueryDocument(dic);
            return Delete(query, collectionName);
        }

        /// <summary>
        /// Delete(Query)
        /// </summary>
        /// <param name="dic">键值对query</param>
        /// <param name="collectionName">collectionName</param>
        /// <returns></returns>
        public static SafeModeResult Delete(IMongoQuery query, string collectionName)
        {
            try
            {
                MongoCollection collection = GetMongoCollections(collectionName);
                return collection != null ? collection.Remove(query) : null;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return null;
            }
        }
        #endregion

        #region 查询
        /// <summary>
        /// Select
        /// </summary>
        /// <typeparam name="T">Entity</typeparam>
        /// <param name="collectionName">collectionName</param>
        /// <param name="dic">Query</param>
        /// <returns>Entity</returns>
        public static T GetOne<T>(string collectionName, Dictionary<string, BsonValue> dic)
        {
            QueryDocument query = new QueryDocument(dic);
            return GetOne<T>(collectionName, query);
        }
        public static T GetOne<T>(string collectionName, IMongoQuery query)
        {
            try
            {
                MongoCollection collection = GetMongoCollections(collectionName);
                return collection != null ? collection.FindOneAs<T>(query) : default(T);
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return default(T);
            }
        }

        /// <summary>
        /// 查询集合List
        /// </summary>
        /// <typeparam name="T">T</typeparam>
        /// <param name="collectionName">collectionName</param>
        /// <param name="dic">Dictionary</param>
        /// <returns></returns>
        public static List<T> GetList<T>(string collectionName, Dictionary<string, BsonValue> dic)
        {
            QueryDocument query = new QueryDocument(dic);
            return GetList<T>(collectionName, query);
        }

        /// <summary>
        /// 查询集合List
        /// </summary>
        /// <typeparam name="T">T</typeparam>
        /// <param name="collectionName">collectionName</param>
        /// <param name="dic">Dictionary</param>
        /// <returns></returns>
        public static List<T> GetList<T>(string collectionName, IMongoQuery query)
        {
            try
            {
                MongoCollection collection = GetMongoCollections(collectionName);
                return collection != null ? collection.FindAs<T>(query).ToList() : null;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return null;
            }
        }

        /// <summary>
        /// 查询分页信息
        /// </summary>
        /// <typeparam name="T">T</typeparam>
        /// <param name="pagesize">pageSize</param>
        /// <param name="pageindex">pageindex</param>
        /// <param name="collectionName">collectionName</param>
        /// <param name="query_dic">query_dic</param>
        /// <param name="sortBy_dic">sortBy_dic</param>
        /// <param name="fields_dic">fields_dic</param>
        /// <returns></returns>
        public static List<T> GetPageInfo<T>(int pagesize, int pageindex, string collectionName, Dictionary<string, BsonValue> query_dic, string[] sortBy_dic, string[] fields_dic)
        {
            QueryDocument query = new QueryDocument(query_dic);
            IMongoSortBy sort = SortBy.Descending(sortBy_dic);
            IMongoFields field = Fields.Include(fields_dic);
            return GetPageInfo<T>(collectionName, query, pagesize, pageindex, sort, field);
        }

        public static List<T> GetPageInfo<T>(string collectionName, IMongoQuery query, int pagesize, int pageindex, IMongoSortBy sortBy, IMongoFields fields)
        {
            try
            {
                MongoCollection collection = GetMongoCollections(collectionName);
                if (collection != null)
                {
                    MongoCursor<T> myCursor;
                    myCursor = query != null
                                   ? collection.FindAs<T>(query)
                                   : collection.FindAllAs<T>();
                    myCursor = sortBy != null ? myCursor.SetSortOrder(sortBy) : myCursor;
                    myCursor = fields != null ? myCursor.SetFields(fields) : myCursor;
                    return myCursor.SetSkip((pageindex - 1) * pagesize).SetLimit(pagesize).ToList<T>();
                }
                return null;
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return null;
            }
        }

        #endregion
    }
}

 

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 使用C#编写一个.NET分析器(一) 使用csv模块的什么方法可以一次性将一行数据写入文件
    使用C#编写一个.NET分析器(一) 使用csv模块的
    译者注这是在Datadog公司任职的Kevin Gosse大佬使用C#编写.NET分析器的系列文章之一,在国内只有很少很少的人了解和研究.NET分析器,它常被用于APM(应用性能诊断)、IDE、诊断工具中,比如Datadog的APM,Visual Studio的分析器以及Rider和Reshaper等等。之前
    03-08
  • 跨语言调用C#代码的新方式-DllExport 跨语言调用本质
    跨语言调用C#代码的新方式-DllExport 跨语言调
    简介上一篇文章使用C#编写一个.NET分析器文章发布以后,很多小伙伴都对最新的NativeAOT函数导出比较感兴趣,今天故写一篇短文来介绍一下如何使用它。在以前,如果有其他语言需要调用C#编写的库,那基本上只有通过各种RPC的方式(HTTP、GRPC)或者引入一层C++
    03-08
  • 我比较了 Go 和 C# 的速度
    我比较了 Go 和 C# 的速度
    我在 Go 和 C# 之间进行了速度比较。我通常使用 C#,但我有机会使用 Go,并且由于传闻 Go 速度很快,所以我实际测量了它。测量内容我在 Go 和 C# 中执行了一个简单的循环和判断过程,以查看整数 2 到 N 是否为质数。来源是Github参考。测量模式 逻辑内核 8 Wi
    03-08
  • [C#]使用 AltCover 获得代码覆盖率 - E2E Test 和 Unit Test
    [C#]使用 AltCover 获得代码覆盖率 - E2E Test
    背景在 CI/CD 流程当中,测试是 CI 中很重要的部分。跟开发人员关系最大的就是单元测试,单元测试编写完成之后,我们可以使用 IDE 或者 dot cover 等工具获得单元测试对于业务代码的覆盖率。不过我们需要一个独立的 CLI 工具,这样我们才能够在 Jenkins 的 CI
  • C#中LINQ的Select与SelectMany函数如何使用 c反应蛋白高说明什么
    C#中LINQ的Select与SelectMany函数如何使用 c反
    本篇内容主要讲解“C#中LINQ的Select与SelectMany函数如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#中LINQ的Select与SelectMany函数如何使用”吧!LINQ的Select与SelectMany函数使用Select扩展函
    02-09 linqselect
  • PerfView专题 (第三篇):如何寻找 C# 中的 VirtualAlloc 内存泄漏
    PerfView专题 (第三篇):如何寻找 C# 中的 Virt
    一:背景上一篇我们聊到了如何用 PerfView 去侦察 NTHeap 的内存泄漏,这种内存泄漏往往是用 C 的 malloc 或者 C++ 的 new 分配而不释放所造成的,这一篇我们来聊一下由 VirtualAlloc 方法造成的泄漏如何去甄别?了解 VirtualAlloc 的朋友肯定说, C# 这种高
    02-09
  • Blazor和Vue对比学习(知识点杂锦3.04):Blazor中C#和JS互操作(超长文)
    Blazor和Vue对比学习(知识点杂锦3.04):Blazo
    C#和JS互操作的基本语法是比较简单的,但小知识点特别多,同时,受应用加载顺序、组件生命周期以及参数类型的影响,会有比较多坑,需要耐心的学习。在C#中调用JS的场景会比较多,特别是在WASM模式下,由于WebAssembly的限制,很多时候,还是需要借助JS去控制D
    02-09
  • 的键">C#怎么使用struct类型作为泛型Dictionary
    本文小编为大家详细介绍“C#怎么使用struct类型作为泛型DictionaryTKey,TValue的键”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么使用struct类型作为泛型DictionaryTKey,TValue的键”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学
  • C#如何实现折半查找算法 彩票查询
    C#如何实现折半查找算法 彩票查询
    本篇内容主要讲解“C#如何实现折半查找算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何实现折半查找算法”吧!折半查找,也叫二分查找,当在一个数组或集合中查找某个元素时,先定位出中间位置元素
    02-09
  • C#如何实现选择排序 c罗
    C#如何实现选择排序 c罗
    本篇内容主要讲解“C#如何实现选择排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何实现选择排序”吧!选择排序是一种低效的排序算法,大致过程是:遍历数组的每一个元素,先假设0号位置上的元素是最
    02-09
点击排行