MongoDb C# Wrapper 类 (MongoDb Driver 1.9)

来源:这里教程网 时间:2026-02-21 13:28:21 作者:

1.安装 mongodb driver package 

2. 使用Wrapper 类:

 public class MongoDbWrapper : IDisposable
    {
        private MongoServer _server;
        private MongoDatabase _db;
        public MongoDbWrapper()
        {
            var uri = ConfigurationSettings.AppSettings["mongoUrl"];
            var url = new MongoUrl(uri);
            var client = new MongoClient(url);
            _server = client.GetServer();
            _db = _server.GetDatabase(url.DatabaseName);
        }
        public MongoDbWrapper BatchAdd<T>(T[] objArray, string collectionName)
        {
            var collection = _db.GetCollection<T>(collectionName);
            collection.InsertBatch(objArray);
            return this;
        }
        public MongoDbWrapper Add<T>(T obj, string collectionName)
        {
            var collection = _db.GetCollection<T>(collectionName);
            collection.Insert(obj);
            return this;
        }
        /// <summary>
        /// e.g. { "Age", new BsonDocument { { "$gte", 10 } } }
        /// </summary>
        /// <param name="query"></param>
        /// <param name="collectionName"></param>
        public void DeleteBy<T>(Expression<Func<T, bool>> whereExp, string collectionName)
        {
            var collection = _db.GetCollection<T>(collectionName);
            collection.Remove(Query<T>.Where(whereExp));
        }
        public void Update<T>(IMongoQuery query, string collectionName, T newObj) where T : IMongoUpdate
        {
            var collection = _db.GetCollection<T>(collectionName);
            collection.Update(query, newObj);
        }
        public IEnumerable<T> Search<T>(Expression<Func<T, bool>> whereExp, string collectionName)
        {
            var collection = _db.GetCollection<T>(collectionName);
            return collection.Find(Query<T>.Where(whereExp)).ToList();
        }
        public T Single<T>(Expression<Func<T, bool>> whereExp, string collectionName)
        {
            return Search(whereExp, collectionName).Single();
        }
        public void RemoveCollection(string collectionName)
        {
            _db.DropCollection(collectionName);
        }
        public void Dispose()
        {
            _server.Disconnect();
        }
    }

3 一些相关操作的用法示例

查询
var driver = dbWrapper.Single<Driver>(d => d.Name == name, DbCollectionName.For<Driver>());
var drivers = dbWrapper.Search<Driver>(d => d.Name == name, DbCollectionName.For<Driver>());
删除
dbWrapper.DeleteBy<Job>(j => j.Id == id, DbCollectionName.For<PublicQueue>());
从集合移除
var updatingNw = Update<Network>.Pull(nw => nw.Jobs, aJobFromQueue);
                dbWrapper.Update(Query<Network>.Where(n => n.Name == Name), DbCollectionName.For<Network>(), updatingNw);
添加新项到集合
var updatingDp = Update<Dispatcher>.AddToSet<dynamic>(d => d.PendingJobs, aJobFromQueue);
                dbWrapper.Update(Query<Dispatcher>.Where(d => d.Name == name), DbCollectionName.For<Dispatcher>(), updatingDp);
更新
dbWrapper.Update(Query<Network>.Where(n => n.Name == Name), DbCollectionName.For<Network>(), updatingNw);

 以上就是MongoDb C# Wrapper 类 (MongoDb Driver 1.9)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关推荐