MongoDB对文件的增、删、查
来源:互联网 发布:免费唱歌录音软件 编辑:程序博客网 时间:2024/05/06 20:16
最近做一级的项目,老师要求学生的答题的word,excel,ppt都要保存上,以便学生以后来咨询的时候老师能拿出来学生当时的答题情况,所以就有了这么一个情况,就是保存学生的答题记录,所以我想了一下,既然只是保存答题的一些信息,就用了MongoDB去实现文件的存取。
安装
对于MongoDB的安装,我就不在赘述了,大家有不懂得,大家照着这篇博客一点一点的操作就可以:http://blog.csdn.net/lovemenghaibin/article/details/43205475
因为咱们要实现GridFS对数据的存取,所以还需要两个驱动MongoDB.Bson.dll,MongoDB.Driver.dll
增删差
上传
上传话用到了GridFS的upload方法,所以我的方法就和他起了一样的名字,代码如下:
/// <summary> /// 上传学生答题记录的压缩包到数据库Upload /// </summary> /// <param name="strSourceFile">学生答题记录的压缩包,例如D:\\11070141021</param> /// <param name="strFileName">数据库中保存的文件名称(使用学好).例如:11070141021</param> /// <param name="strGridFS">GRIDFS保存的数据集合的名称</param> public void Upload(string strSourceFile, string strFileName, string strGridFS) { //定义一个本地文件的路径字符串 string localFileName = strSourceFile; //定义mongoDB数据库中文件的名称 string mongoDBFileName = strFileName; //设置GridFS文件中对应的集合前缀名 MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = strGridFS }; //实例化一个GridFS MongoGridFS gridfs = new MongoGridFS(database, fsSetting); //将本地文件上传到mongoDB中去,以默认块的大小256KB对文件进行分块 gridfs.Upload(localFileName, mongoDBFileName); }
查询
Mongo的保存文件信息的时候他就是保存的Bson,所以我们读取的时候就以json的形式都出来,至于咱们用的时候怎么转化成DataTable,大家网上找一下就可以,我这里就直接返回json了。
/// <summary> /// 获取集合GetInfoList /// </summary> /// <param name="fileName">查询的关键字,以学好信息为准</param> /// <param name="strGridFs">GridFS的名称</param> /// <returns></returns> public string GetInfoList(string fileName, string strGridFs) { MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = strGridFs }; MongoGridFS fs = new MongoGridFS(database, fsSetting); MongoCollection collection = database.GetCollection(strGridFs + ".files"); string filesJSON = "["; //排序方法-按照时间降序排列 SortByDocument sort = new SortByDocument { {"filename", 1}, {"uploadDate", -1} }; //关键字查询 Regex findby = new Regex(@".*" + fileName + ".*", RegexOptions.IgnoreCase); QueryDocument query = new QueryDocument { {"filename", findby} }; MongoCursor<MongoGridFSFileInfo> docList = fs.Find(query).SetSortOrder(sort); foreach (MongoGridFSFileInfo doc in docList) { UInt32 length = Convert.ToUInt32(doc.Length); string size = null; if (length > 1024 * 1024) size = ((double)length / 1024 / 1024).ToString("F2") + "MB"; else if (length > 1024) size = ((double)length / 1024).ToString("F2") + "KB"; else size = length.ToString() + "B"; filesJSON += "{\"name\":\"" + doc.Name + "\",\"lastModify\":\"" + Convert.ToDateTime(doc.UploadDate).ToLocalTime().ToString() + "\", \"size\":\"" + size + "\"},"; } if (filesJSON.EndsWith(",")) { filesJSON = filesJSON.Substring(0, filesJSON.Length - 1); } filesJSON += "]"; return filesJSON; }
下载(Download)
下载非常的简单,就是一个DownLoad方法
/// <summary> /// 下载指定的文件DownLoad /// </summary> /// <param name="strGridFs"></param> /// <param name="strFileName"></param> public void DownLoad( string strFileName,string strGridFs) { //设置GridFS文件中对应的集合前缀名 MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = strGridFs }; //实例化一个GridFS MongoGridFS fs = new MongoGridFS(database, fsSetting); //根据学好拼接出一个压缩包的名称 string fileName = strFileName ; fs.Download(fileName); }
删除
删除和下载几乎一样,直接调用一个方法就可以。
/// <summary> /// 删除文件 /// </summary> /// <param name="fileName">文件名称</param> /// <param name="strGridFS">GridFS的学院名称</param> public void Delete(string fileName, string strGridFS) { MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = strGridFS }; MongoGridFS fs = new MongoGridFS(database, fsSetting); fs.Delete(fileName); }看是不是非常的简单,但是这个下载却折磨了我整整一天,找了很多的方法,都没有可以替代的,最后才发现,原来是我链接数据库的字符串不对,所以才导致了不能下载和删除的操作,链接字符串的时候要在后边加一句safe=true,例如: private string connectionString = "mongodb://localhost:27017/?safe=true";
客户端
<span style="font-weight: normal;"> private void button1_Click(object sender, EventArgs e) { ZipHelper.CreateZip(@"F:\360Apps", @"F:\360Apps.zip"); //申明一个实例 MongoHelper mh = new MongoHelper("menghaibin"); //上传 mh.Upload(@"d:\110701410211.zip", "110701410211.zip", "test"); //查询 string json = mh.GetInfoList("1107014", "test"); //下载 mh.DownLoad( "110701410211.zip","test"); //删除 mh.Delete("110701410211.zip", "test"); }</span>
这样一个简单的MongoDB对数据库的操作就算是完成,当然原理的东西,我以后慢慢讲吧。
0 0
- MongoDB对文件的增、删、查
- golang-httprouter-mongodb,对数据库进行增、删、改、查。
- nodejs对mongodb的增删改查
- MongoDB简单的增、删、改、查
- node.js对mongodb的增删查改
- nodejs对mongodb数据库的增删改查操作
- Scala对MongoDB的增删改查操作
- java操作mongodb的增、删、改、查操作。
- c# 实现mongodb的增、删、改、查
- JDOM 对Xml文件(增、删、改、查)
- JDOM 对Xml文件(增、删、改、查)
- python对文件进行增,删,改,查
- 使用dom4j对xml文件进行增、删、改、查
- 一个前端攻城狮的全栈之路第五弹:mongoose简单使用(实现对mongodb的增、删、改、查)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- iOS8系统H264视频硬件解码Demo
- java -> sql 数据类型
- int *&p与int *P的区别
- 利用Dojo进行DOM事件编程
- 【64.22】【E】【leetcode】Pascal's Triangle II
- MongoDB对文件的增、删、查
- CSS3 新增颜色表示方式
- codeforces B.Queries about less or equal elements
- Bug 小记(**贵金属)
- 应试教育的死穴,恰在于堵死了孩子“犯错”的空间后感
- Restore IP Addresses
- 文章标题
- centOS 更新python版本
- 桶排序