更新时间:2025-07-31 GMT+08:00
分享

C#示例

操作场景

本章节主要介绍使用C#语言连接副本集实例的方法。

前提条件

  1. 连接数据库的弹性云服务器必须和DDS实例之间网络互通,可以使用curl命令连接DDS实例服务端的IP和端口号,测试网络连通性。

    shell

    curl ip:port

    返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。

  2. 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。

环境配置及驱动获取

  1. 安装.NET SDK: 保证您的环境有.NET SDK。您可以从官方网站进行下载:https://dotnet.microsoft.com/download
  2. 创建新项目: 打开终端或命令提示符,创建一个新的.NET 控制台应用程序。
    dotnet new console -n DDSExample
    cd DDSExample
  3. 添加 MongoDB C# 驱动程序: 使用 NuGet 将 MongoDB C# 驱动程序添加到您的项目中。
    dotnet add package MongoDB.Driver

连接代码

  • SSL开启
    using MongoDB.Bson;
    using MongoDB.Driver;
    using System;
    using System.Security.Cryptography.X509Certificates;
    using System.Threading.Tasks;
     
    public class MongoDBSecureWriter
    {
        public static async Task Main()
        {
            var connectionString = "mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin&replicaSet=replica";
            var caCertPath = "/path/to/certs/ca.crt";  
            var collectionName = "testCollection";    
     
            try
            {
                var client = CreateSecureClient(connectionString, caCertPath);
                
                var database = client.GetDatabase("mydatabase");
                var collection = database.GetCollection<BsonDocument>(collectionName);
                
                var document = new BsonDocument
                {
                    { "name", "Secure Test" },
                    { "value", 42 },
                    { "timestamp", DateTime.UtcNow }
                };
                
                await collection.InsertOneAsync(document);
                Console.WriteLine($"Insert doc ID: {document["_id"]}");
                
                // 验证写入
                var filter = Builders<BsonDocument>.Filter.Eq("_id", document["_id"]);
                var result = await collection.Find(filter).FirstOrDefaultAsync();
                Console.WriteLine($"result: {(result != null ? "success" : "fail")}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Fail: {ex.Message}");
                if (ex.InnerException != null)
                {
                    Console.WriteLine($"Exception: {ex.InnerException.Message}");
                }
            }
        }
     
        private static MongoClient CreateSecureClient(string connectionString, string caCertPath)
        {
            var caCert = new X509Certificate2(caCertPath);
            
            var settings = MongoClientSettings.FromConnectionString(connectionString);
     
            settings.SslSettings = new SslSettings
            {
                CheckCertificateRevocation = false,
                ClientCertificates = new[] { caCert }
            };
            settings.UseTls = true;
            settings.AllowInsecureTls = true;
     
            settings.MaxConnectionPoolSize = 100;
            settings.MinConnectionPoolSize = 10;
            
            return new MongoClient(settings);
        }
    }
  • SSL关闭
    using MongoDB.Driver;
    using MongoDB.Bson;
    using System;
    class Program
    {
        static void Main(string[] args)
        {
            // Replace <YourConnectionString> with your MongoDB connection string
            var connectionString = "mongodb://rwuser:rwuserpassword@ip:port/{mydb}?authSource=admin&replicaSet=replica";
            
            // Create a MongoClient object
            var client = new MongoClient(connectionString);
            
            // Get a reference to the database
            var database = client.GetDatabase("testDatabase");
            
            // Get a reference to a collection
            var collection = database.GetCollection<BsonDocument>("testCollection");
            
            // Create a sample document
            var document = new BsonDocument
            {
                { "name", "DDS" },
                { "type", "Database" },
                { "count", 1 },
                { "versions", new BsonArray { "v3.4", "v4.0", "v4.2" } },
                { "info", new BsonDocument { { "x", 203 }, { "y", 102 } } }
            };
            
            // Insert the document into the collection
            collection.InsertOne(document);
            
            Console.WriteLine("Document inserted successfully!");
        }
    }
  • URL中的认证数据库必须为“admin”,即“authSource=admin”。
  • rwuser账户的认证数据库必须为“admin”,之后再切换至业务数据库。

运行程序

在终端或命令提示符使用以下命令运行程序。

dotnet run

相关文档