MongoDB操作非结构化数据

转自:http://blog.csdn.net/han_yankun2009/article/details/17050959

Mongodb

 

一般指分布式文档存储数据介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.

 我们这次项目中用到的就是它的这两个特点

 

特点:

使用高效的二进制数据存储,包括大型对象(如视频等)。

*自动处理碎片,以支持云计算层次的扩展性。

面向集合存储,易存储对象类型的数据。

 

关于mongdb的数据数据操作,攀比SQL Server mongodb的操作和它真是有的一比,几乎是如出一辙。增删改查,样样都有。

下面咱就看看它的连接和查询方式吧。

扫描二维码关注公众号,回复: 1167508 查看本文章

当然在使用mongodb数据库之前是要先引入它的一些驱动程序的,(我这里使用的是官方提供的两个驱动程序)所谓的就是两个Dll类库文件。分别是

 MongoDB.Driver.dll:顾名思义,驱动程序

 MongoDB.Bson.dll:序列化、Json相关。

之后我们在自己所用的程序中引入这两个dll文件和导入命名空间。

 

下列就是具体的实例代码了

1 链接数据库

 

///初始化Mongodb数据库链接

 

[csharp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
 
  1. public void Init()  
  2.     {  
  3.    
  4.    
  5. //数据库连接字符串,207017是mongodb的数据库端口  
  6. ConnectionString="mongodb://Localhost:27017/?safe=true"/>  
  7.  //数据库名称  
  8.  conststring dbName ="ExamDB";  
  9. //创建数据库连接  
  10.    
  11.  MongoServerSettingssettings= new MongoServerSettings();  
  12.  settings.MaxConnectionPoolSize = 1000;//设定最大连接池  
  13. //等待列队数量  
  14.   settings.WaitQueueSize = 50;  
  15.  MongoServer server=MongoServer.Create(settings);//创建连接数据文件  
  16.  //获得数据库cnblogs  
  17. MongoDatabase db=server.GateDataBase(dbName);  
  18.    
  19. }  



 

 

通过我们先前的Sql链接数据库我们发现几乎没有什么不同,这是名字换了下而已。所以不同的数据库操作,只要认识了一种,熟悉后,对别的数据库操作,上手是很容易的。

         

[csharp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
 
  1. string connStr =ConfigurationManager.AppSettings["connstr"]; //获取配置文件的连接  
  2.           conn = new SqlConnection(connStr);  
  3.   conn.open();  

 

 

2插入数据

 

好了数据打开了,现在得添加数据了,由于mongodb没有表的概念,只有数据集合,所以我们插入数据,就要设定数据的集合名称。(但这里很类似表,只是存储的数据不再受表的限制,它是对象集合,所以可以存储任意的数据类型):

 

 

[csharp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
 
  1.  public static stringfileTable = "files";//设定查询的集合名称  
  2. //Httpcontext类是获取前台的数据  
  3. Public bool Insert(HttpContext contex)  
  4. {  
  5.             MongoDatabase db = Init();  
  6. // MongoGridFS fs = newMongoGridFS(db); //如果不设定查询的集合,则默认读取的集合表名是filse  
  7. //定义设定集合对象,设定查询的集合  
  8.             MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = fileTable };  
  9. //定义文件的操作对象,可以执行文件的增加,删除和更新操作  
  10.     MongoGridFS fs = new MongoGridFS(DB, fsSetting);        
  11.  // 摘要:  public sealed class HttpPostedFile.ContentLength  
  12.  //    获取上载文件的大小(以字节为单位)。  
  13.  // 返回结果:  
  14.  // 文件长度(以字节为单位)。  
  15. //定义文件字节流对象  
  16.  HttpPostedFile file =context.Request.Files["Filedata"];  
  17.  int nFileLen = file.ContentLength;//     文件长度(以字节为单位)         
  18. byte[]myData = new Byte[nFileLen];  
  19.  file.InputStream.Read(myData, 0, nFileLen).//将文件以字节流的形式写入  
  20.    
  21. //添加文件上传的附件信息,可以添加很多,这里只做个实例  
  22.  MongoGridFSCreateOptions option = new MongoGridFSCreateOptions();  
  23.  option.UploadDate = DateTime.Now;  
  24. //Using语句实现销毁链接方式  
  25. //MongoGirdFSStream可以实现文件的度和取得操作,  
  26.  //创建文件,文件并存储数据  
  27. using(MongoGridFSStream gfs = fs.Create(file.FileName, option))  
  28.                 {  
  29.                     gfs.Write(myData, 0,nFileLen);  
  30.                     gfs.Close();  
  31. }  
  32.    
  33. }  



 

 

 

通过实例我们发现,Mongodb的操作和SQLServer的操作是很大程度上是相识的,包括增,删除,添加和修改等方式,只是名字不同。我们不必因为是一个新的东西而听着害怕这种感觉,只要肯联系和观察思考,就会发现和以往有很多联系之处的

以上只是一个简单的上传的实例,具体的更多的方法还等待大家继续去实践。后续继续说明Mongodb的一些配置。

猜你喜欢

转载自xinklabi.iteye.com/blog/2158058