首頁  >  文章  >  後端開發  >  MongoDb C# 包裝類別(MongoDb Driver 1.9)

MongoDb C# 包裝類別(MongoDb Driver 1.9)

黄舟
黄舟原創
2017-03-01 10:45:391449瀏覽

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)!


#
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn