gpt4 book ai didi

c# - MongoDb 高效的连接创建

转载 作者:可可西里 更新时间:2023-11-01 10:44:26 29 4
gpt4 key购买 nike

我想知道创建/关闭 MongoDb 连接的最有效方法。

我有一组 Restful 服务(使用 C# 创建),其中一些从 MongoDb 获取数据,一些 POST 数据。

   public static MongoDatabase GetDatabase()
{
MongoServerSettings settings = new MongoServerSettings();
settings.Server = new MongoServerAddress("localhost", 27017);
MongoServer server = new MongoServer(settings);
var database = server.GetDatabase("RapidDataStream");
return database;
}

我使用上述连接形成我的每个服务,例如列出所有传感器的服务。

public List<Sensor> getPublicSensors()
{
List<Sensor> sensors = new List<Sensor>();
MongoDatabase mySensor = GetDatabase();
var query = Query.And(Query.EQ("User", BsonValue.Create("Public")));
var mySensorRecords = mySensor.GetCollection("sensor_meta_data").Find(query);
DataSet ds = new DataSet();

foreach (var rec in mySensorRecords)
{
Sensor sensor = new Sensor();
sensor.sensorId = rec["EnvId"].ToString();

for (int i = 2; i < rec.ElementCount; i++)
{
SensorObject so = new SensorObject();
so.fieldName = rec.GetElement(i).Name.ToString();
so.value = rec.GetElement(i).Value.ToString();
sensor.sensorObject.Add(so);
}
sensors.Add(sensor);
}
return sensors;
}

我的问题是,这是否是一个有效的设计,否则我该如何改进它?

非常感谢。

最佳答案

我相信 Mongo(或驱动程序)会为我们处理一些事情,所以我使用 Create 方法:

MongoServer.Create(....)

而不是创建一个新实例。 Create 方法将创建一个新实例或返回一个现有实例(每个服务器设置都是唯一的)。

其实只是为了给大家展示一下我目前实际使用的方法:

internal static MongoDatabase DB(IMongoConfig config)
{
return MongoServer
.Create(config.ConnectionString) //This bit is getting the MongoServer
.GetDatabase(config.DatabaseName); //This bit gets the Database, which is returned
}

IMongoConfig 只是我用来指定的一个小 DTO,如您所见,我需要的连接字符串和数据库名称 - 这与 MongoServer.Create 的工作相结合> 使处理从同一运行代码库到多个数据库的连接变得非常容易。

public interface IMongoConfig
{
string ConnectionString { get; set; }
string DatabaseName { get; set; }
}

关于c# - MongoDb 高效的连接创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14898322/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com