MongoDB實現檔案刪除
做ITOO過程中,在實現mongodb檔案刪除的時候遇到點問題,上網查,網上資源很多,想查到自己想要的更是不容易,所以只能一個個試,還好心態好,琢磨了幾天實現了根據id刪除檔案,可是今天看了看,刪除有個地方需要最佳化,就是多選刪除,多次提示刪除成功,所以硬著頭皮一股勁把它解決了,這真要感謝傑哥啦,幫了我很大的忙啊
這是前台刪除的核心代碼:
//根據檔案id刪除選中檔案 $("#btndelete").click(function () { //判斷是否選中了要刪除的檔案 var rows = $('#fileList').datagrid('getSelected'); if (!rows || rows == null) { $.messager.alert("提示", "請選擇要刪除的檔案。"); return; } var files = $('#fileList').datagrid('getSelections'); var obj = eval(files); var fileid = ''; //截取fileid for (var i = 0; i < files.length; i++) { obj[i]._id += '|'; fileid += obj[i]._id;//擷取id } console.log(fileid); //傳資料,執行controller的delete方法 $.ajax({ type: 'POST', url: '/MongodbHelp/ProcessRequest', data: { action: "DELETE", value: fileid }, success: function (data) { getFiles(); alert("刪除檔案成功"); }, error: function (err) { alert(err); } }); })
後台代碼:
/// <summary> /// 根據objectid刪除檔案 /// </summary> /// <returns></returns> public void Delete() { //擷取前台的數組 string filesid = Request["value"]; //截取數組元素 string[] file = filesid.Split('|'); //去除最後一組的'|' List<string> fileList = file.ToList(); fileList.Remove(fileList[fileList.Count - 1]); //查庫 MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = fileTable }; MongoGridFS fs = new MongoGridFS(DB, fsSetting); MongoCollection collection = DB.GetCollection(fileTable + ".files"); //遍曆刪除 foreach (string item in fileList) { var result = collection.Remove(Query.EQ("_id", new ObjectId(item))); } }
總結:
多試試,膽子需要再大點