using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using MongoDB.Driver;
using MongoDB.Bson;
using Newtonsoft.Json;
namespace ShadowEditor.Server.Helpers
{
///
/// MongoDB帮助类
///
///
///
public class MongoHelper
{
private string connectionString;
private string dbName;
private MongoClient client;
private IMongoDatabase db;
///
/// 构造函数
///
public MongoHelper()
{
connectionString = ConfigurationManager.AppSettings["mongo_connection"];
dbName = ConfigurationManager.AppSettings["mongo_dbName"];
client = new MongoClient(connectionString);
db = client.GetDatabase(dbName);
}
///
/// 构造函数
///
/// 连接字符串
/// 数据库名称
public MongoHelper(string connectionString, string dbName)
{
this.connectionString = connectionString;
this.dbName = dbName;
client = new MongoClient(connectionString);
db = client.GetDatabase(dbName);
}
///
/// 构造函数
///
/// 数据库名称
public MongoHelper(string dbName)
{
connectionString = ConfigurationManager.AppSettings["mongo_connection"];
this.dbName = dbName;
client = new MongoClient(connectionString);
db = client.GetDatabase(dbName);
}
///
/// 列出所有数据集
///
/// 数据集游标
public IAsyncCursor ListCollections()
{
return db.ListCollections();
}
///
/// 获取某个数据集
///
/// 数据集名称
/// 数据集游标
public IMongoCollection GetCollection(string name)
{
return db.GetCollection(name);
}
///
/// 删除某个数据集
///
/// 数据集名称
public void DropCollection(string name)
{
db.DropCollection(name);
}
///
/// 插入一条数据
///
/// 数据集名称
/// 数据
public void InsertOne(string collectionName, BsonDocument document)
{
GetCollection(collectionName).InsertOne(document);
}
///
/// 插入多条数据
///
/// 数据集名称
/// 文档列表
public void InsertMany(string collectionName, IEnumerable documents)
{
GetCollection(collectionName).InsertMany(documents);
}
///
/// 获取文档数量
///
/// 数据集名称
/// 数量
public long Count(string collectionName)
{
return GetCollection(collectionName).Count(new BsonDocument());
}
///
/// 获取数据集中满足条件的数据数量
///
/// 数据集名称
/// 过滤器
/// 数量
public long Count(string collectionName, FilterDefinition filter)
{
return GetCollection(collectionName).Count(filter);
}
///
/// 获取第一条满足条件的数据
///
/// 数据集名称
/// 过滤器
/// 数据
public BsonDocument FindOne(string collectionName, FilterDefinition filter)
{
return GetCollection(collectionName).Find(filter).FirstOrDefault();
}
///
/// 获取所有满足条件的数据
///
/// 数据集名称
/// 过滤条件
/// 数据列表
public List FindMany(string collectionName, FilterDefinition filter)
{
return GetCollection(collectionName).Find(filter).ToList();
}
///
/// 获取数据集中所有数据
///
/// 数据集名称
/// 数据列表
public List FindAll(string collectionName)
{
return GetCollection(collectionName).Find(new BsonDocument()).ToList();
}
///
/// 更新满足条件的第一条数据
///
/// 数据集名称
/// 过滤条件
/// 更新内容
/// 更新结果
public UpdateResult UpdateOne(string collectionName, FilterDefinition filter, UpdateDefinition update)
{
return GetCollection(collectionName).UpdateOne(filter, update);
}
///
/// 更新所有满足条件的所有数据
///
/// 数据集名称
/// 过滤条件
/// 更新内容
/// 更新结果
public UpdateResult UpdateMany(string collectionName, FilterDefinition filter, UpdateDefinition update)
{
return GetCollection(collectionName).UpdateMany(filter, update);
}
///
/// 更新数据集中所有数据
///
/// 数据集名称
/// 更新内容
/// 更新结果
public UpdateResult UpdateAll(string collectionName, UpdateDefinition update)
{
return GetCollection(collectionName).UpdateMany(new BsonDocument(), update);
}
///
/// 删除数据集中满足条件的第一条数据
///
/// 数据集名称
/// 过滤条件
/// 删除结果
public DeleteResult DeleteOne(string collectionName, FilterDefinition filter)
{
return GetCollection(collectionName).DeleteOne(filter);
}
///
/// 删除数据集中满足条件的所有数据
///
/// 数据集名称
/// 过滤条件
/// 删除结果
public DeleteResult DeleteMany(string collectionName, FilterDefinition filter)
{
return GetCollection(collectionName).DeleteMany(filter);
}
///
/// 删除数据集中所有数据
///
/// 数据集名称
/// 删除结果
public DeleteResult DeleteAll(string collectionName)
{
return GetCollection(collectionName).DeleteMany(new BsonDocument());
}
}
}