好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MongoDb的增删改查

MongoDb的增删改查

因为项目可能要上MongoDb,所以前几周对MongoDb作了一些了解,具体参照内容来自  于 http://www.cnblogs.com/lipan/archive/2011/03/08/1966463.html 的系列博客,至于安装服务则参照了其他博客,地址未搜藏。

  作为存储数据的载体,其操作不外乎增删改查四项,所以我对其功能在做了简单的调试,至于并发之类的线程问题并未做具体工作。 

  在阅读了上面的博客之后,我首先做了一个类似SqlHelper的MongoDbHelper类(为了方便,并未做config配置,直接是默认路径):

  

 public   class   MongoDbHelper
    {
          ///   <summary> 
         ///   获取Mongo实体
          ///   </summary> 
         ///   <param name="connStr">  连接字符串  </param> 
         ///   <returns>  Mongo实体  </returns> 
      public   static  Mongo GetMongo( string   connStr)
        {
            connStr  = connStr ==  null  ?  "  mongodb://localhost  "   : connStr;
              try  
            {
                  return   new   Mongo(connStr);
            }
              catch  
            {
                  return   null  ;
            }
        }

       ///   <summary> 
         ///   获取数据库
          ///   </summary> 
         ///   <param name="mongo">  Mongo实体  </param> 
         ///   <param name="dbName">  数据库名称  </param> 
         ///   <returns>  数据库  </returns> 
      public   static  IMongoDatabase GetMongoDb(Mongo mongo,  string   dbName)
        {
            dbName  = dbName ==  null  ?  "  defaultDatabase  "   : dbName;
              try  
            {
                  return   mongo.GetDatabase(dbName);
            }
              catch  
            {
                  return   null  ;
            }
        }

       ///   <summary> 
         ///   获取数据库集合
          ///   </summary> 
         ///   <param name="connStr">  连接字符串  </param> 
         ///   <param name="dbName">  数据库名  </param> 
         ///   <param name="collectionName">  集合名  </param> 
         ///   <returns>  集合  </returns> 
      public   static  IMongoCollection<Document> GetMonogoCollection(IMongoDatabase mongoDb,  string   collectionName)
        {
            collectionName  = collectionName ==  null  ?  "  defaultCollection  "   : collectionName;
              try  
            {
                  return  mongoDb.GetCollection<Document> (collectionName);
            }
              catch  
            {
                  return   null  ;
            }
        }
} 

值得一提的是MongoDb的速度,一百万条数据总共花了100秒左右,平均每秒10000条。 

随后就在main中就对mongoDb进行插入操作添加数据:

   class   Program
    {
          static   void  Main( string  [] args)
        {
            Mongo mongo  = MongoDbHelper.GetMongo( null  );
            IMongoDatabase mongoDb  = MongoDbHelper.GetMongoDb(mongo, null  );
            IMongoCollection <Document> docCollection = MongoDbHelper.GetMonogoCollection(mongoDb, null  );
            mongo.Connect();
            Document doc;
            List <Document> docList =  new  List<Document> ();
              for  ( int  i =  0 ; i <  1000000 ; i++ )
            {
                doc  =  new   Document();
                doc[  "  Id  " ] =  i;
                doc[  "  Name  " ] =  "  aaaaa  "  +  i.ToString();
                docList.Add(doc);
            }

              for  ( int  i =  0 ; i < docList.Count; i++ )
            {
                docCollection.Insert(docList[i]);
            }
mongo.Dispose();
            mongo.Disconnect();
            Console.WriteLine(  "  ok  "  );
            Console.ReadKey();
        }
    } 

  完成之后,重新修改了main函数分别利用lambda语句对其进行了删、查、改的操作:

   class   Program
    {
          static   void  Main( string  [] args)
        {
            Mongo mongo  = MongoDbHelper.GetMongo( null  );
            IMongoDatabase mongoDb  = MongoDbHelper.GetMongoDb(mongo, null  );
            IMongoCollection <Document> docCollection = MongoDbHelper.GetMonogoCollection(mongoDb, null  );
            mongo.Connect();
            
              //  单条删除 
            docCollection.Remove( new  Document( "  Id  " ,  1  ));
              //  单条查找 
            Document doca = docCollection.FindOne( new  Document { {  "  Id  " ,  2   } });
              //  单条修改 
             docCollection.Update(new Document("Id", 1), new Document("Id", 10000));
            
              //  批量删除 
            docCollection.Remove(d => ( int )d[ "  Id  " ] >  900000  );                       
              //  批量查找 
            ICursor<Document> docss = docCollection.Find(d => ( int )d[ "  Id  " ] <  30  );
              //  批量修改 
            docCollection.UpdateAll( new  Document { {  "  Names  " ,  "  hahaha  "  } }, d => ( int )d[ "  Id  " ] <  5  );
            
            mongo.Disconnect();
            Console.WriteLine(  "  ok  "  );
            Console.ReadKey();
        }
    } 

  总体来说,mongoDb的操作与sqlserver的操作有很大相似度,只是有一点内容本人现在依旧不明,望大神解惑:

  mongoDb的大小问题,在数据被remove之后mongoDb产生的文件不会减小,不知道会不会一直增大,直至超过2G,最终使程序崩溃(本人一直都是使用的x86系统)?

 

 

分类:  外部插件

标签:  MongoDb

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于MongoDb的增删改查的详细内容...

  阅读:38次

上一篇: Python test

下一篇:LINQ执行表达式