视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MongodbConnectionString
2020-11-09 15:13:27 责编:小采
文档


继续查找发现了另一篇文章。只做重点翻译:

内部认证

当你只需要一个用户,它在连接字符串中指定这是可能的。

var connectionString ="mongodb://user1:password1@localhost/test";
var mongoClient = newMongoClient(connectionString);
 
注意: 如果你不指定一个数据库连接字符串,默认的数据库是“admin”数据库.

看到这里心里狂喜,终于可以进行配置文件的设置了,但是发现c#的驱动并不支持这样的编写,于是又是一个失落。

链接原理:

链接数据库,官方提供了两种线程安全的方式,一个是MongoClient, 另一个是MongoServer,都是线程安全的,自动进行锁定的。

利用服务端类链接数据库

// Create server settings to passconnection string, timeout, etc.
MongoServerSettingssettings =newMongoServerSettings();
settings.Server = new MongoServerAddress("localhost",27017);
// Create server object tocommunicate with our server
MongoServer server = new MongoServer(settings);
// Get our databaseinstance to reach collections and data
var database = server.GetDatabase("MessageDB");

客户端类链接数据库的实例

var client = new MongoClient("mongodb://localhost:27017");
var server = client.GetServer();
var database = server.GetDatabase("foo");
var collection = database.GetCollection("bar");

以上的两种链接方式我都做个测试。并且都可以用。这是一般更倾向于客户端的链接方式。

通过查找Api,发现客户端的类的构造方法还有其他的

 public MongoClient();
 public MongoClient(MongoClientSettingssettings);
 public MongoClient(MongoUrl url);
 public MongoClient(stringconnectionString);

我们通常用的是string字符串的链接,这次对MongoClientSettings进行的深度的查找调用发MongoClientSettings 是可以进行更多的参数设置的,和Option类似,于是找到了解决方案,通过配置文件对MongoClientSettings进行参数设置。

默认情况下,最大链接池是100,最小是0,数据库链接是本地的。下面我们看测试

MongoClientSettings settingsclient = newMongoClientSettings();//实例化客户端设置类

红色划线部分是默认的参数,当我们不填写任何参数,驱动程序是进行默认的参数设置的。

通过客户端类的参数设置可以发现已经有所不同了。

那代码是如何编写的呢

#region 读取配置文件信息

 //获取链接池大小

 int connectionPool =Convert.ToInt32(ConfigurationManager.AppSettings["connectionPool"]);

 int minpool =Convert.ToInt32(ConfigurationManager.AppSettings["minpool"]);

 string hostname =ConfigurationManager.AppSettings["hostname"];

 Int32 port =Convert.ToInt32(ConfigurationManager.AppSettings["port"]);

 string database =ConfigurationManager.AppSettings["database"];
 
 #endregion
 
 if (String.IsNullOrEmpty(ConnectionString))

 {

 throw newArgumentNullException("Connection string not found.");

 }

 #region 客户端类设置

 MongoServerAddress ipaddress = newMongoServerAddress(hostname, port);//设置服务器的ip和端口

 MongoClientSettings settingsclient= new MongoClientSettings();//实例化客户端设置类

 settingsclient.Server =ipaddress;//端口赋值

 settingsclient.MaxConnectionPoolSize = connectionPool;

 settingsclient.MinConnectionPoolSize = minpool;

 settingsclient.ConnectionMode =0;//链接模式设置

 // MongoUrl url=newMongoUrl(ConnectionString);

 MongoClient client = newMongoClient(settingsclient);//调用客户端类构造函数设置参数

 MongoServer server =client.GetServer();//服务端获取客户端参数

 DB =server.GetDatabase(database);//获取数据库名称

 #endregion 

刚开始我也是不知道如何进行参数赋值,只是在一步步的操作中发现参数是有类型的,一些类型是一些引用类,就需要实例化赋值。所以才有最后看起来很多的参数。

配置文件中的信息



 

 

 

 

 

当然了客户端的方式写出来了。服务端也就容易的很多了

#region 服务端链接设置

 MongoServerSettings mongoSetting =new MongoServerSettings();

 //mongoSetting.Server = newMongoServerAddress(ConnectionString, connectionPool);

 mongoSetting.MaxConnectionPoolSize= connectionPool;//设定最大连接池

 mongoSetting.Server = newMongoServerAddress(hostname, port);

 MongoServer server =MongoServer.Create(mongoSetting);//创建连接数据文件

 DB = server.GetDatabase(database);

 #endregion 

认识:

由于该数据库的参考资料比较少,所以多数资料还是外文,刚开始看到很是惊讶,如此多的英语能看的明白么。但是只要心境平静,一切都是可以的。通过基本的查找和一些外文论坛了解的基本的设置。很像SQL的设置,但是又不同,需要进行代码设置,这是这个代码的参数可以写在配置文件中。这次的资料查找我深刻认识到,英语是非常非常重要的工具,如果你想更深入的了解,英语是必不可少的利器。

下载本文
显示全文
专题