Как переопределить файл gridfs в Play Framework, используя реактивмонго?
У меня есть следующий код, чтобы написать файл 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)))
...
Код работает нормально, но он дублирует файлы в коллекции, когда я пишу два файла с одинаковым именем. Я думал создать уникальный индекс, используя поле имени файла, но это сохранило бы первый файл, и мне нужно сохранить самую новую версию. Как мне это сделать?
Спасибо,
Джорджия
1 ответ
- сбросить индекс для имени файла
- загрузите новый файл, хорошо, если несколько версий файлов имеют одинаковые имена
- переписать запрос примерно так: find({filename: "some-file-name.txt"}).sort({uploadDate: -1}).limit(1), в результате вы получите только самые последние
- Вы можете использовать метку времени из нового загруженного файла, чтобы удалить все файлы с тем же именем и меньшей меткой времени