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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did46863