2

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)))
      ...

コードは正常に動作しますが、同じ名前の 2 つのファイルを書き込むと、コレクション内のファイルが複製されます。ファイル名フィールドを使用して一意のインデックスを作成することを考えましたが、それでは最初のファイルが保持され、最新バージョンを保持する必要があります。どうすればいいですか?

ありがとう、

GA

4

1 に答える 1

0
  1. ファイル名のインデックスを削除します
  2. 新しいファイルをアップロードします。複数のファイル バージョンに同じ名前が付いていても問題ありません
  3. クエリを次のように書き直します: find({filename: "some-file-name.txt"}).sort({uploadDate: -1}).limit(1)。
  4. 新しくアップロードされたファイルのタイムスタンプを使用して、同じ名前でタイムスタンプが小さいすべてのファイルを削除できます
于 2013-08-28T23:31:27.793 に答える