在web环境中高效地使用MongoDB
我是从NHibernate的背景接触MongoDB的,我想知道在web环境中高效使用MongoDB的最佳实践是什么 使用NHibernate,我为应用程序的生命周期创建一个ISessionFactory,然后为每个请求使用一个ISession实例。以下面的代码为例(我希望它是典型的,如果不理想,请更正) 我通常会为每个应用程序或每个请求提供一个在web环境中高效地使用MongoDB,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我是从NHibernate的背景接触MongoDB的,我想知道在web环境中高效使用MongoDB的最佳实践是什么 使用NHibernate,我为应用程序的生命周期创建一个ISessionFactory,然后为每个请求使用一个ISession实例。以下面的代码为例(我希望它是典型的,如果不理想,请更正) 我通常会为每个应用程序或每个请求提供一个Mongo类的实例吗?var db呢?或者,当我需要DB交互时,我会使用下面的所有代码吗 更新:我正在使用mongodb csharp(尽管如果存在,请建
Mongo
类的实例吗?var db呢?或者,当我需要DB交互时,我会使用下面的所有代码吗
更新:我正在使用mongodb csharp(尽管如果存在,请建议更好的替代方案)
谢谢
using (var mongo = new Mongo())
{
mongo.Connect();
var db = mongo.GetDatabase("mydb");
var mongoCollection = db.GetCollection("mycollection");
var document = new Document(Guid.NewGuid().ToString(), new
{
x = 1,
y = 2
});
mongoCollection.Insert(document);
}
每个驱动程序通常都有某种形式的持久连接或连接池。我不确定您使用的是哪种语言/驱动程序,但请检查文档中的连接池 另外,当运行
Mongo.connect()
时,通常会有连接字符串(mongodb://user:pwd@主机:port/db
),这将减少代码行数,让您直接进入集合
此外,通常不需要使用GUID。Mongo驱动程序通常提供特定于Mongo的某种形式的“MongoID”。此外,默认行为是在没有ID的情况下为您创建ID
除此之外,我将详细介绍您的驱动程序/库,因为它们略有不同。使用mongodb csharp时,您将其视为ADO连接。 创建Mongo对象时,它会从池中借用一个连接,直到释放为止,该池是它所拥有的。因此,在使用块之后,连接将返回到池中。 创建Mongo对象既便宜又快捷 示例
for(var i=0;i<100;i++)
{
using(var mongo1 = new Mongo())
using(var mongo2 = new Mongo())
{
mongo1.Connect();
mongo2.Connect();
}
}
for(var i=0;您使用Norm还是mongodb csharp?请添加标签!