2014-09-05 35 views
0

我試圖刪除GridF上的文件,但即使我沒有收到任何錯誤也沒有任何反應。使用GrifFsTemplate.delete刪除GridFS上的文件

Query query = new Query (Criteria.where("filename").is(filename)); 

this.gridFsTemplate.delete(query); 

任何想法如何做到這一點?有沒有更好更安全的方法來刪除文件,也許使用id?

謝謝。 Alexio

回答

0

我認爲問題在於您的查詢不能檢索任何內容。 GridFS不是與一個集合一起工作,而是與兩個集合一起工作,因此我們可能無法像通常那樣使用Criteria類中的where()方法。

我深入研究Spring文檔,發現它很方便地提供了一個提供靜態方法的類,特別是用於查詢類似於你的類。隨後,您的問題的正確答案應該是:

Query query = new Query(GridFsCriteria.whereFileName().is(filename)); 
this.gridFsTemplate.delete(query); 

我希望這有助於!您可以在Spring GridFS支持here上找到相關文檔。

+0

但你的方式與我的方式有什麼不同?我實例化在構造函數中傳遞Criteria的查詢對象(這是一種可能性),並在第二步中將條件添加到查詢對象中。 – 2015-02-26 09:53:57

+0

你是**絕對**。要修改那個無用的答案,這裏使用'GridFsCriteria'輔助類來進行正確的查詢! – afraisse 2015-08-03 18:47:29