MongoDb C# Wrapper 类
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);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。