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 IFindFluent FindMany(string collectionName, FilterDefinition filter) { return GetCollection(collectionName).Find(filter); } /// /// 获取数据集中所有数据 /// /// 数据集名称 /// 数据列表 public IFindFluent FindAll(string collectionName) { return GetCollection(collectionName).Find(new BsonDocument()); } /// /// 更新满足条件的第一条数据 /// /// 数据集名称 /// 过滤条件 /// 更新内容 /// 更新结果 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()); } } }