zoukankan      html  css  js  c++  java
  • MangoDB的C#Driver驱动简单例子

    以下是本人学习C#Driver驱动简单的学习例子。GridFS的增删查操作 和 表的增删查改操作。

     

        public class MongoServerHelper
        {
            public static string dataBase = "File";
            public static string fsName = "fs";
    
            private static string _IP = "192.168.1.60";
            private static int _port = 27017;
    
            public MongoServer GetMongoServer()
            {
                MongoServerSettings Settings = new MongoServerSettings();
                Settings.Server = new MongoServerAddress(_IP, _port);
                //最大连接池
                Settings.MaxConnectionPoolSize = 500;
                //最大闲置时间
                Settings.MaxConnectionIdleTime = TimeSpan.FromSeconds(30);
                //链接时间
                Settings.ConnectTimeout = TimeSpan.FromSeconds(10);
                //等待队列大小
                Settings.WaitQueueSize = 50;
                //socket超时时间
                Settings.SocketTimeout = TimeSpan.FromSeconds(10);
                //队列等待时间
                Settings.WaitQueueTimeout = TimeSpan.FromSeconds(60);
                //操作时间
                Settings.OperationTimeout = TimeSpan.FromSeconds(60); 
                MongoServer server = new MongoServer(Settings);
                return server;
            }
        }
        public class BaseDAL
        {
            public MongoServerHelper mongoServerHelper = new MongoServerHelper();
            private MongoServer server = null;
    
            public BaseDAL()
            {
                server = mongoServerHelper.GetMongoServer();
            }
    
            /// <summary>  
            /// 新增  
            /// </summary>   
            public Boolean Insert(String collectionName, BsonDocument document)
            {
                server.Connect();
                MongoDatabase database = server.GetDatabase(MongoServerHelper.dataBase);
                MongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>(collectionName);
                try
                {
                    collection.Insert(document);
                    server.Disconnect();
                    return true;
                }
                catch
                {
                    server.Disconnect();
                    return false;
                }
            }
    
            /// <summary>  
            /// 新增  
            /// </summary>   
            public Boolean Insert<T>(String collectionName, T t)
            {
                server.Connect();
                MongoDatabase database = server.GetDatabase(MongoServerHelper.dataBase);
                var collection = database.GetCollection<T>(collectionName);
                try
                {
                    collection.Insert(t);
                    server.Disconnect();
                    return true;
                }
                catch
                {
                    server.Disconnect();
                    return false;
                }
            }
    
            /// <summary>  
            /// 批量新增  
            /// </summary>
            public IEnumerable<WriteConcernResult> Insert<T>(String collectionName, List<T> list)
            {
                server.Connect();
                MongoDatabase database = server.GetDatabase(MongoServerHelper.dataBase);
                var collection = database.GetCollection<T>(collectionName);
                try
                {
                    IEnumerable<WriteConcernResult> result = collection.InsertBatch(list);
                    server.Disconnect();
                    return result;
                }
                catch
                {
                    server.Disconnect();
                    return null;
                }
            }
    
            /// <summary>  
            /// 修改  
            /// </summary>    
            public WriteConcernResult Update(String collectionName, IMongoQuery query, QueryDocument update)
            {
                server.Connect();
                MongoDatabase database = server.GetDatabase(MongoServerHelper.dataBase);
                MongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>(collectionName);
                try
                {
                    var new_doc = new UpdateDocument() { { "$set", update } };
                    //UpdateFlags设置为Multi时,可批量修改
                    var result = collection.Update(query, new_doc, UpdateFlags.Multi);
                    server.Disconnect();
                    return result;
                }
                catch
                {
                    return null;
                }
            }
    
            /// <summary>  
            /// 移除匹配的集合
            /// </summary>  
            public Boolean Remove(String collectionName, IMongoQuery query)
            {
                server.Connect();
                MongoDatabase database = server.GetDatabase(MongoServerHelper.dataBase);
                MongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>(collectionName);
                try
                {
                    collection.Remove(query);
                    server.Disconnect();
                    return true;
                }
                catch
                {
                    server.Disconnect();
                    return false;
                }
            }
    
            /// <summary>
            /// 分页查询
            /// </summary>       
            public List<T> GetPageList<T>(String collectionName, IMongoQuery query, string sort, bool isDesc, int index, int pageSize, out long rows)
            {
                server.Connect();
                MongoDatabase database = server.GetDatabase(MongoServerHelper.dataBase);
                MongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>(collectionName);
                List<T> list;
                try
                {
                    rows = collection.FindAs<T>(query).Count();
                    if (isDesc)
                    {
                        list = collection.FindAs<T>(query).SetSortOrder(SortBy.Descending(sort)).SetSkip(index).SetLimit(pageSize).ToList();
                    }
                    else
                    {
                        list = collection.FindAs<T>(query).SetSortOrder(SortBy.Ascending(sort)).SetSkip(index).SetLimit(pageSize).ToList();
                    }
                    server.Disconnect();
                    return list;
    
                }
                catch
                {
                    rows = 0;
                    server.Disconnect();
                    return null;
                }
            }
    
            /// <summary>
            /// 查询对象集合
            /// </summary>
            public List<T> GetList<T>(String collectionName, IMongoQuery query, string[] sort, bool isDesc)
            {
                server.Connect();
                MongoDatabase database = server.GetDatabase(MongoServerHelper.dataBase);
                MongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>(collectionName);
                List<T> list;
                try
                {
                    if (isDesc)
                    {
                        list= collection.FindAs<T>(query).SetSortOrder(SortBy.Descending(sort)).ToList();
                        server.Disconnect();
                        return list;
                    }
                    else
                    {
                        list =collection.FindAs<T>(query).SetSortOrder(SortBy.Ascending(sort)).ToList();
                        server.Disconnect();
                        return list;
                    }
                }
                catch
                {
                    return null;
                }
            }
    
            /// <summary>
            /// 总数
            /// </summary>    
            public long Count(string collectionName, IMongoQuery query)
            {
                server.Connect();
                MongoDatabase database = server.GetDatabase(MongoServerHelper.dataBase);
                MongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>(collectionName);
                try
                {
                    server.Disconnect();
                    return collection.Count(query);
                }
                catch
                {
                    server.Disconnect();
                    return 0;
                }
            }
        }
        public class BaseEntity
        {
            /// <summary>
            /// 基类对象的ID,MongoDB要求每个实体类必须有的主键
            /// </summary>
            [BsonRepresentation(BsonType.ObjectId)]
            public string Id { get; set; }
        }
        public class User : BaseEntity
        {
            public string Name { get; set; }
            public int No { get; set; }
            public DateTime Time { get; set; }
            public double Money { get; set; }
        }
                BsonDocument doc = new BsonDocument() 
                { 
                    {"Name","Mongo"},
                    {"No",102},
                    {"Time",DateTime.Now},
                    {"Money",102.123}
                };
                _daoMongo.Insert("MongoUser", doc);
    
                User model = new User() { Name = "MongoT", No = 1, Time = DateTime.Now, Money = 11.22 };
                _daoMongo.Insert<User>("MongoUser", model);
                List<User> List = new List<User>();
                for (int i = 0; i < 10; i++)
                {
                    List.Add(new User() { Name = "MongoT" + i, No = i, Time = DateTime.Now, Money = 11.22 });
                }
                _daoMongo.Insert<User>("MongoUser", List);
    
    
                QueryDocument update = new QueryDocument() { { "Name", "22222" }, { "Money", 1000.555 } };
                _daoMongo.Update("MongoUser", Query<User>.EQ(m => m.No, 2), update);
    
                _daoMongo.Remove("MongoUser", Query<User>.EQ(m => m.No, 1));
    
                long aa = _daoMongo.Count("MongoUser", Query<User>.GT(m => m.No, 2));
    
                List<User> list = _daoMongo.GetList<User>("MongoUser", Query<User>.GT(m => m.No, 2), new string[] { "No" }, true);
                List<User> list2 = _daoMongo.GetPageList<User>("MongoUser", Query<User>.GT(m => m.No, 2), "No", true, 1, 6, out aa);
        /// <summary>
        /// GridFS文件处理
        /// </summary>
        public class GridFSHelper
        {
            private MongoServerHelper mongoServerHelper = new MongoServerHelper();
            protected internal MongoServer server = null;
    
            public GridFSHelper()
            {
                server = mongoServerHelper.GetMongoServer();
            }
    
            public string AddDoc(byte[] content, string ContentType, string fileName)
            {
                try
                {
                    string fileID = Guid.NewGuid().ToString();
                    this.server.Connect();
                    MongoGridFSCreateOptions optioms = new MongoGridFSCreateOptions()
                    {
                        ChunkSize = 261120,
                        UploadDate = DateTime.Now.AddHours(8),
                        ContentType = ContentType,
                        Id = fileID
                    };
                    MongoGridFS fs = new MongoGridFS(this.server, MongoServerHelper.dataBase, new MongoGridFSSettings() { Root = MongoServerHelper.fsName });
    
                    using (MongoGridFSStream gfs = fs.Create(fileName, optioms))
                    {
                        gfs.Write(content, 0, content.Length);
                    }
                    return fileID;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (this.server != null)
                        this.server.Disconnect();
                }
            }
    
            public byte[] GetDoc(string fileID)
            {
                try
                {
                    this.server.Connect();
                    MongoDatabase db = this.server.GetDatabase(MongoServerHelper.dataBase);
                    MongoGridFS fs = new MongoGridFS(this.server, MongoServerHelper.dataBase, new MongoGridFSSettings() { Root = MongoServerHelper.fsName });
                    byte[] bytes = null;
                    MongoGridFSFileInfo info = fs.FindOneById(fileID);
                    using (MongoGridFSStream gfs = info.Open(FileMode.Open))
                    {
                        bytes = new byte[gfs.Length];
                        gfs.Read(bytes, 0, bytes.Length);
                    }
                    return bytes;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (this.server != null)
                        this.server.Disconnect();
                }
            }
    
            public bool DeleteDoc(string fileID)
            {
                if (string.IsNullOrEmpty(fileID))
                    return false;
    
                try
                {
                    this.server.Connect();
                    MongoDatabase db = this.server.GetDatabase(MongoServerHelper.dataBase);
                    MongoGridFS fs = new MongoGridFS(this.server, MongoServerHelper.dataBase, new MongoGridFSSettings() { Root = MongoServerHelper.fsName });
                    fs.DeleteById(fileID);
                    return true;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (this.server != null)
                        this.server.Disconnect();
                }
            }
        }
            public ActionResult Load()
            {
                HttpPostedFileBase hpf = Request.Files["fileUpload"];
                string objectID;
                objectID = _gridFSHelper.AddDoc(StreamToBytes(hpf.InputStream), hpf.ContentType, hpf.FileName);
                return Content(objectID);
            }

  • 相关阅读:
    泛型的内部原理:类型擦除以及类型擦除带来的问题
    内部类访问局部变量的时候,为什么变量必须加上final修饰
    Web 测试经验总结
    故障测试
    智能硬件产品的测试经验总结
    web端测试和移动端测试的区别小记
    MVC模式介绍
    重定向与转发
    MySQL权限管理分配
    pt-heartbeat工具监控MySQL复制延迟
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/5151972.html
Copyright © 2011-2022 走看看