首页 数据库 mysql教程 c#链接mongDB集群实战开发3

c#链接mongDB集群实战开发3

Jun 07, 2016 pm 03:56 PM
实战 开发 链接 集群

c# 链接mongDB集群 一 了解mongdb 二 部署集群 三 C#链接mongdb 完成测试 C#链接mongdb 完成测试 此章节继续我们上一章节将的我们开始用程序去链接mondbdb,大家都知道我们链接sqlserver其实用的是微软自己写的驱动。它已经封装了一些对象,要我们去链接。但

c# 链接mongDB集群

一 了解mongdb

二 部署集群

三 C#链接mongdb 完成测试 

C#链接mongdb 完成测试

此章节继续我们上一章节将的我们开始用程序去链接mondbdb,大家都知道我们链接sqlserver其实用的是微软自己写的驱动。它已经封装了一些对象,要我们去链接。但是我们链接mondbdb 同样需要一些对象,这个mongdb官网有说明,可以自己去看看或者直接下载我的这里下载 或者在第一章节有些伙伴们已经下载好了

开发驱动文件夹 在 mongo-csharp-driver-mastermongo-csharp-driver-mastersrc SRC下面看到驱动项目这里注意,我下载是vs2012的项目,同学们可以根据自己的需要替换net framework 版本

打开项目之后看到 如图所示

编译项目得到

MongoDB.Bson.dll

MongoDB.Driver.dll

创建项目,项目配置文件如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <appSettings>
    <add key="LogLevel" value="trace" />
    <add key="LogPath" value="E:\Tools\mongdb\FrmMongDB\FrmMongDB\logs" />
    
    <!--MongDb配置begin-->
    <add key="MongReplicaSetName" value="zuomm"/><!--设置副本集名称-->
    <add key="MongoServerAddress" value="127.0.0.1:1111|127.0.0.1:2222|127.0.0.1:3333"/><!--mongdb集群列表-->
    <add key="TimeOut" value="60"/><!--mongdb集群链接超时时间-->
    <!--MongDb配置end-->
  </appSettings>

</configuration>
登录后复制

LogLevel 为自定义 日记级别 ,这个后面看我的代码

LogPath 为日志路径

MongReplicaSetName 为副本集名称,其实就是建立集群的时候取的名字。

MongoServerAddress 为集群机器ip列表,我这里是自己的机器开了不同的端口来区别,你可以改成局域网ip

TimeOut 超时时间,默认貌似是3秒,我这里设置60秒方便调试

链接集群主要代码

 /// <summary>
        /// 取得数据库连接字符串
        /// </summary>
        /// <param name="connName">App.Config文件中AppSettings节中 AppSettings 对应的name</param>
        /// <returns>数据库连接字符串</returns>
        private static MongoServer GetConnStr()
        {
            List<MongoServerAddress> servers = new List<MongoServerAddress>();
            string reg = @"^(?&#39;server&#39;\d{1,}.\d{1,}.\d{1,}.\d{1,}):(?&#39;port&#39;\d{1,})$";
            string[] ServerList = ConfigurationManager.AppSettings["MongoServerAddress"].Trim().Split(&#39;|&#39;);
            foreach (string server in ServerList)
            {
                MatchCollection mc = Regex.Matches(server, reg);
                if (mc != null && mc.Count > 0)
                    servers.Add(new MongoServerAddress(mc[0].Groups["server"].ToString(), Convert.ToInt32(mc[0].Groups["port"].ToString())));
            }

            if (servers == null || servers.Count < 1)
                return null;

            MongoClientSettings set = new MongoClientSettings();

            set.Servers = servers;

            set.ReplicaSetName = ConfigurationManager.AppSettings["MongReplicaSetName"].Trim();//设置副本集名称

            int TimeOut =ConvertUtil.ParseInt(ConfigurationManager.AppSettings["TimeOut"].Trim());//设置副本集名称

            set.ConnectTimeout = new TimeSpan(0, 0, 0, TimeOut, 0);//设置超时时间为5秒

            set.ReadPreference = new ReadPreference(ReadPreferenceMode.SecondaryPreferred);

            MongoClient client = new MongoClient(set);

            return client.GetServer();
        }
set.ReadPreference = new ReadPreference(ReadPreferenceMode.SecondaryPreferred); 这句代码可以根据自己需要修改。
登录后复制

其他没有什么注意的地方

数据插入mongdb代码

    /// <summary>
        /// MongDB 批量insert语句
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="_databaseName">数据库名称</param>
        /// <param name="_collectionName">表名称</param>
        /// <param name="entitys">对象</param>
        /// <param name="errorMsg">返回错误</param>
        /// <returns></returns>
        public static IEnumerable<SafeModeResult> Execute<T>(string _databaseName, string _collectionName, IEnumerable<T> entitys, out string errorMsg)
        {
            errorMsg = string.Empty;
            //取得数据库连接
            IEnumerable<SafeModeResult> result = null;

            try
            {
                if (null == entitys)
                    return null;
                //获取连接的服务器集群
                _server = GetConnStr();

                //获取数据库或者创建数据库(不存在的话)。
                MongoDatabase database = _server.GetDatabase(_databaseName);

                using (_server.RequestStart(database))//开始连接数据库。
                {
                    MongoCollection<T> myCollection = database.GetCollection<T>(_collectionName);
                    result = myCollection.InsertBatch<T>(entitys);
                }
            }
            catch (Exception ex)
            {
                errorMsg = ex.ToString();
            }
            finally
            {
            }

            //记录日志
            if (!string.IsNullOrEmpty(errorMsg))
            {
                LogUtil.Error("CommonLib.DbAccess.MongDBAccess", "Execute", errorMsg + "\n\r\t");
            }

            return result;
        }
登录后复制

读取mongdb数据代码

/// <summary>
        /// 如果不清楚具体的数量,一般不要用这个函数。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collectionName"></param>
        /// <returns></returns>
        public static List<T> GetAll<T>(string _databaseName, string collectionName,out string errorMsg)
        {
            errorMsg = string.Empty;
            List<T> result = new List<T>();
            try
            {
                //获取连接的服务器集群
                _server = GetConnStr();

                //获取数据库或者创建数据库(不存在的话)。
                MongoDatabase database = _server.GetDatabase(_databaseName);
               
                using (_server.RequestStart(database))//开始连接数据库。
                {
                    MongoCollection<T> myCollection = database.GetCollection<T>(collectionName);
                    result.AddRange(myCollection.FindAll());
                }
            }
            catch (Exception ex )
            {
                errorMsg = ex.ToString();
            }
            //记录日志
            if (!string.IsNullOrEmpty(errorMsg))
            {
                LogUtil.Error("CommonLib.DbAccess.MongDBAccess", "GetAll", errorMsg + "\n\r\t");
            }
            return result;
        } 
登录后复制

以上是插入和读取代码。

后面运行效果如下

我这里插入了10w条数据 人然后读取10w条数据。效率比sqlserver是快很多。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

115://开头的链接怎么下载?下载方法介绍 115://开头的链接怎么下载?下载方法介绍 Mar 14, 2024 am 11:58 AM

  最近有很多用户都在问小编,115://开头的链接怎么下载?想要下载115://开头的链接需要借助115浏览器,大家下载好115浏览器后,再来看看下面小编整理好的下载教程吧。  115://开头的链接下载方法介绍  1、登录115.com,下载115浏览器并安装。  2、在115浏览器地址栏输入:chrome://extensions/,进入扩展中心,搜索Tampermonkey,安装对应插件。  3、在115浏览器地址栏输入:  油猴脚本:https://greasyfork.org/en/

如何获取微信视频号链接?微信视频号怎么添加商品链接? 如何获取微信视频号链接?微信视频号怎么添加商品链接? Mar 22, 2024 pm 09:36 PM

微信视频号作为微信生态系统的一部分,已经逐渐成为内容创作者和商家的重要推广工具。在这个平台上获取视频号链接对于分享和传播内容至关重要。下文将详细介绍如何获取微信视频号链接,以及如何在视频号中添加商品链接,提升内容的传播效果。一、如何获取微信视频号链接?在微信视频号中发布视频后,系统会自动创建一个视频链接。作者可以在发布后复制该链接,方便进行分享和传播。登录微信视频号后,您可以浏览自己的视频号主页。在主页上,每个视频都附有相应的链接,方便您直接复制或分享。3.搜索视频号:在微信搜索框中输入视频号名

四款值得推荐的AI辅助编程工具 四款值得推荐的AI辅助编程工具 Apr 22, 2024 pm 05:34 PM

这个AI辅助编程工具在这个AI迅速发展的阶段,挖掘出了一大批好用的AI辅助编程工具。AI辅助编程工具能够提高开发效率、改善代码质量、降低bug率,是现代软件开发过程中的重要助手。今天大姚给大家分享4款AI辅助编程工具(并且都支持C#语言),希望对大家有所帮助。https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI编码助手,可帮助你更快、更省力地编写代码,从而将更多精力集中在问题解决和协作上。Git

视频号挂链接需要什么条件?视频号带货怎么挂链接? 视频号挂链接需要什么条件?视频号带货怎么挂链接? Mar 07, 2024 pm 01:13 PM

随着短视频平台的盛行,越来越多的创作者开始利用视频号来创作和推广内容。视频号不仅可以展示个人才能,还可以通过带货链接来实现商业变现。但是,要在视频号中添加链接,必须符合一定的条件。一、视频号挂链接需要什么条件?视频号认证是在视频号中添加链接的前提条件。目前,主要的短视频平台如抖音、快手等都提供认证服务,主要包括个人认证和机构认证两种类型。个人认证需要提交真实身份信息,而机构认证则需要提供相关企业或组织的认证材料。完成认证后,用户可以在视频号中添加链接,提升账号的可信度和权威性。视频号挂链接的一个

学习如何利用Go语言开发移动应用程序 学习如何利用Go语言开发移动应用程序 Mar 28, 2024 pm 10:00 PM

Go语言开发移动应用程序教程随着移动应用市场的不断蓬勃发展,越来越多的开发者开始探索如何利用Go语言开发移动应用程序。作为一种简洁高效的编程语言,Go语言在移动应用开发中也展现出了强大的潜力。本文将详细介绍如何利用Go语言开发移动应用程序,并附上具体的代码示例,帮助读者快速入门并开始开发自己的移动应用。一、准备工作在开始之前,我们需要准备好开发环境和工具。首

AI程序员哪家强?探索Devin、通义灵码和SWE-agent的潜力 AI程序员哪家强?探索Devin、通义灵码和SWE-agent的潜力 Apr 07, 2024 am 09:10 AM

2022年3月3日,距世界首个AI程序员Devin诞生不足一个月,普林斯顿大学的NLP团队开发了一个开源AI程序员SWE-agent。它利用GPT-4模型在GitHub存储库中自动解决问题。SWE-agent在SWE-bench测试集上的表现与Devin相似,平均耗时93秒,解决了12.29%的问题。SWE-agent通过与专用终端交互,可以打开、搜索文件内容,使用自动语法检查、编辑特定行,以及编写和执行测试。(注:以上内容为原内容微调,但保留了原文中的关键信息,未超过指定字数限制。)SWE-A

PHP实战:快速实现斐波那契数列的代码示例 PHP实战:快速实现斐波那契数列的代码示例 Mar 20, 2024 pm 02:24 PM

PHP实战:快速实现斐波那契数列的代码示例斐波那契数列是数学中一个非常有趣且常见的数列,其定义如下:第一个和第二个数为0和1,从第三个数开始,每个数都是前两个数的和。斐波那契数列的前几个数字依次为0,1,1.2,3,5,8,13,21,...依此类推。在PHP中,我们可以通过递归和迭代两种方式来实现斐波那契数列的生成。下面我们分别来展示这两

抖店怎么上链接-抖店上链接教程 抖店怎么上链接-抖店上链接教程 Mar 06, 2024 am 08:40 AM

有很多朋友还不知道抖店怎么上链接,所以下面小编就讲解了抖店上链接的方法教程,有需要的小伙伴赶紧来看一下吧,相信对大家一定会有所帮助哦。第一步:首先打开抖店电脑端,进入左边栏“橱窗商品管理”,如图所示。第二步:接着点击右上角的“添加商品”,如图所示。第三步:然后将我们的商品链接复制粘贴进去,如图所示。第四步:随后点击“确认添加”,如图所示。第五步:最后输入介绍、图片等信息,再点击“确认”就能在抖音上链接了,如图所示。上面就是小编为大家带来的抖店怎么上链接的全部内容,希望对大家能够有所帮助哦。

See all articles