PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

MongoDb C# Wrapper 类 (MongoDb Driver 1.9)

黄舟
黄舟 原创
2017-03-01 10:45:39 1222浏览

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[] objArray, string collectionName)
        {
            var collection = _db.GetCollection(collectionName);
            collection.InsertBatch(objArray);

            return this;
        }

        public MongoDbWrapper Add(T obj, string collectionName)
        {
            var collection = _db.GetCollection(collectionName);
            collection.Insert(obj);

            return this;
        }

        /// 
        /// e.g. { "Age", new BsonDocument { { "$gte", 10 } } }
        /// 
        /// 
        /// 
        public void DeleteBy(Expression> whereExp, string collectionName)
        {
            var collection = _db.GetCollection(collectionName);
            collection.Remove(Query.Where(whereExp));
        }

        public void Update(IMongoQuery query, string collectionName, T newObj) where T : IMongoUpdate
        {
            var collection = _db.GetCollection(collectionName);
            collection.Update(query, newObj);
        }

        public IEnumerable Search(Expression> whereExp, string collectionName)
        {
            var collection = _db.GetCollection(collectionName);
            return collection.Find(Query.Where(whereExp)).ToList();
        }

        public T Single(Expression> 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(d => d.Name == name, DbCollectionName.For());
var drivers = dbWrapper.Search(d => d.Name == name, DbCollectionName.For());

删除
dbWrapper.DeleteBy(j => j.Id == id, DbCollectionName.For());

从集合移除
var updatingNw = Update.Pull(nw => nw.Jobs, aJobFromQueue);
                dbWrapper.Update(Query.Where(n => n.Name == Name), DbCollectionName.For(), updatingNw);

添加新项到集合
var updatingDp = Update.AddToSet(d => d.PendingJobs, aJobFromQueue);
                dbWrapper.Update(Query.Where(d => d.Name == name), DbCollectionName.For(), updatingDp);

更新
dbWrapper.Update(Query.Where(n => n.Name == Name), DbCollectionName.For(), updatingNw);

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


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。