MongoDb的增删改查
因为项目可能要上MongoDb,所以前几周对MongoDb作了一些了解,具体参照内容来自 于 http://HdhCmsTestcnblogs测试数据/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://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did46863