2

我有下面的代碼寫GridFS的文件:如何使用reactivemongo覆蓋Play框架內的gridfs文件?

request.body.files.toList.lastOption match { 
    case Some(picture) => { 
     val filename = picture.filename 
     val contentType = picture.contentType 
     picture.ref.moveTo(new File("/tmp/" + filename), true) 

     val gridFS = new GridFS(db, "attachments") 
     val fileToSave = DefaultFileToSave(filename, contentType) 

     val futureResult: Future[ReadFile[BSONValue]] = gridFS.writeFromInputStream(fileToSave, new FileInputStream(new File("/tmp/" + filename))) 
     ... 

代碼工作正常,但當我寫兩個文件具有相同名稱的它複製集合中的文件。我想創建一個唯一的索引使用文件名字段,但這將保持第一個文件,我需要保持最新版本。我該怎麼做?

感謝,

GA

回答

0
  1. 刪除索引的文件名
  2. 上傳新文件,它是好的,如果多個文件版本具有相同的名稱
  3. 重寫查詢像那麼:find({filename:「some-file-name.txt」})。sort({uploadDate:-1})。limit(1),結果你只得到最近的
  4. 你可以使用來自新上傳的f的時間戳刪除所有具有相同名稱和較小時間戳的文件