我对MongoDB和NoSQL很新,我刚刚开始使用MongoDB/Norm/ASP.NET MVC 3构建一个站点.
我想知道我应该如何确定与Mongo数据库的连接.
现在我有一个Basecontroller,它实现了MongoSession和onActionExecuted我处理它所以我所有的派生控制器都可以访问我的MongoSession.MongoSession类在其构造函数中打开一个连接,并将它放在Dispose()上,就像它今天的工作方式一样.
private IMongo _mongo;
public MongoSession()
{
_mongo = Mongo.Create("connString");
}
public void Dispose()
{
_mongo.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
如果我在控制器中做其他事情,我有点担心它可能会持续打开太长时间.
这种方法是否应该不会冒太多连接的风险,或者我应该做更像下面的示例方法?
public void Add<T>(T item) where T : class, new()
{
using (var mongo = Mongo.Create("connString"))
{
mongo.GetCollection<T>().Insert(item);
}
}
Run Code Online (Sandbox Code Playgroud)
另一个跟进问题是:
通过Norm"昂贵"操作打开和关闭MongoDB连接?
database-connection scoping mongodb norm mongodb-.net-driver
我在Windows上运行MongoDB.我有一个或多个线程删除并重新创建一个集合.
使用mongo.exe与show collections()命令,我看到名称相同的多个集合(超过1000个集的同名!).
当我运行验证时:
> db.MY_COLLECTION.validate()
Run Code Online (Sandbox Code Playgroud)
我明白了:
{ "errmsg" : "ns not found", "ok" : 0, "valid" : false }
Run Code Online (Sandbox Code Playgroud)
该size()命令返回0,并且不find()返回任何内容.
我的问题是:MongoDB线程安全吗?接下来的问题将是"我是否正确地执行此操作(删除和重新创建),还是有更好的方法来刷新集合的整个内容?"
concurrency multithreading thread-safety mongodb document-database
我们的项目中有一个webAPI,它非常简单,但它在执行后不会释放内存,每次执行时都会增加使用的内存。
我使用 webAPI 2.0 和 MongoDB 作为后端服务器。
public class LogsController:ApiController
{
BsonDocument __docs;
IMongoDatabase __db;
IMongoCollection<BsonDocument> __docsColl;
[Route("api/Logs")]
public async Task<int> Post(RequestData logs)
{
if (logs.Token == "I")
{
__db = new MongoClient(new MongoClientSettings
{
Server = new MongoServerAddress("serverIP", 27017),
Credentials = new[] { MongoCredential.CreateCredential("database", "user name", "password") }
}).GetDatabase("connect_database");
__docs = new BsonDocument()
{
{ "Customer",logs.Customer}
};
__docsColl = __db.GetCollection<BsonDocument>("InsertData");
await __docsColl.InsertOneAsync(__docs);
}
logs = null;
return 1;
}
protected override void Dispose(bool disposing)
{
__docs = null;
__db …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc-4 asp.net-web-api asp.net-web-api2 mongodb-.net-driver