更新时间:2026-05-27 GMT+08:00
C#示例
操作场景
DDS支持通过C#语言接口来操作数据,通过C#连接实例的方式有开启SSL认证连接和关闭SSL认证连接两种,其中开启SSL证书连接加密功能,具有更高的安全性。
DDS新实例默认关闭SSL数据加密,开启SSL请参考开启SSL。
本章节主要介绍使用C#语言连接副本集实例的方法。
前提条件
环境配置及驱动获取
- 安装.NET SDK: 保证您的环境有.NET SDK。您可以从官方网站进行下载:https://dotnet.microsoft.com/download
- 创建新项目: 打开终端或命令提示符,创建一个新的.NET 控制台应用程序。
dotnet new console -n DDSExample cd DDSExample
- 添加 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);
}
} 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