2017-05-10 19 views
2

Handelingファイルをファイルの取り扱いgridfsでのMongoDBにgridfsとMongoDBのに

私は私が一週間以上の回答詳細を見つけるために試してみて、ネットでの答えとして興味深い何かを見つけることができません、それ以下の質問があります。

1)mongoデータベースに同じmongofileリクエスト内の2つの異なるファイルをgridfs経由で挿入することは可能ですか?ファイルが同じである可能性がありますuniq files_id

2)私はユーザコレクションを持っており、各ユーザはmongodbにアッププロードされた1つまたは複数のファイルを持っています。ユーザーとファイルをリンクすることは可能ですか?どのファイルが各ユーザーに属しているかを知りたい。

3)したがって、ユーザーのコレクションにファイルのメタデータ(デフォルトではfs.files)を含めることができます。たとえば、次のようなものがあります。

{ 
    _id:112, 
    Firstname:“Mickael”, 
    Lasttname:“Jackson”, 
    Files:[ 
     { 
     _id:5910e57f24f3f7047494720c 
     "filename":"File1", 
     "chunkSize":NumberInt(261120), 
     "uploadDate":ISODate("2014-04-13T11:32:33.557Z"), 
     "md5":"7b762939321e146569b07f72c62cca4f", 
     "length":NumberInt(646) 
     }, 
     { 
     _id:1841e57f24f3f7047494720b 
     "filename":"File2", 
     "chunkSize":NumberInt(261120), 
     "uploadDate":ISODate("2014-04-13T11:32:33.557Z"), 
     "md5":"7b762939321e146569b07f72c62cca4f", 
     "length":NumberInt(646) 
     } 
    ] 
} 

ありがとうございます。ここで

答えて

1
{ 
    _id:112, 
    Firstname:“Mickael”, 
    Lasttname:“Jackson”, 
    Files:[ 
     { 
     _id:5910e57f24f3f7047494720c 
     "filename":"File1", 
     "chunkSize":NumberInt(261120), 
     "uploadDate":ISODate("2014-04-13T11:32:33.557Z"), 
     "md5":"7b762939321e146569b07f72c62cca4f", 
     "length":NumberInt(646) 
     }, 
     { 
     _id:1841e57f24f3f7047494720b 
     "filename":"File2", 
     "chunkSize":NumberInt(261120), 
     "uploadDate":ISODate("2014-04-13T11:32:33.557Z"), 
     "md5":"7b762939321e146569b07f72c62cca4f", 
     "length":NumberInt(646) 
     } 
    ] 
} 

はあなたのフォーマットされたコード

+1

ありがとう書いたコードのためのA.Raza – mamkha

+1

あなたを聞いてよかった –

2
  1. が、それはモンゴデータベースに同じmongofile要求にgridfsを経由して2つの貴様ファイルを挿入することが可能ですか?ファイルには同じ固有のfiles_idがありますか?

    これが可能だったとしても、これはお勧めしません。ファイルごとに1つのリクエストを行う必要があります。 いいえ、同じ一意の_idを持つことはできません。セカンダリIDが必要な場合は、fs.fileのメタデータプロパティを使用してください。

  2. 私はユーザーコレクションを持っており、各ユーザーには1つまたは複数のファイルがmongodbにアップロードされています。ユーザーとファイルをリンクすることは可能ですか?どのファイルが各ユーザーに属しているかを知りたい。

    はい、fs.filesコレクション内のユーザーとドキュメントの間のリンクを作成できます。 これを行うには、DBRefs、https://docs.mongodb.com/manual/reference/database-references/#dbrefsを使用します。あなたは基本的に、あなたは、このようなユーザ構造を持つ

    { 
        _id:112, 
        Firstname:“Mickael”, 
        Lasttname:“Jackson”, 
        Files:[ //YOU WILL ONLY STORE _id of fs.files 
         { 
          "$ref" : "fs.files", 
          "$id" : ObjectId("5126bc054aed4daf9e2ab772"),//file of id 
          "$db" : <database name> 
         } 
        ] 
    } 
    

    それとも、でもfs.files内のメタデータプロパティを持っているとユーザーIDを割り当てることができuser.files でfs.files文書の参照を格納どこそこ。

    { 
        _id:1841e57f24f3f7047494720b 
        "filename":"File2", 
        "chunkSize":NumberInt(261120), 
        "uploadDate":ISODate("2014-04-13T11:32:33.557Z"), 
        "md5":"7b762939321e146569b07f72c62cca4f", 
        "length":NumberInt(646) 
        "metadata" :{ 
          user : { 
           "$ref" : "users", 
            "$id" : 112, 
            "$db" : <database name> 
          } 
    } 
    

    ユーザーを削除した場合、制約、 ようにはSQLが存在しないことに注意してください、あなたはまた、そのユーザに属しているファイルを削除する必要があります。 それ以外の場合は孤児がいます。

  3. したがって、ユーザーのコレクションにファイルのメタデータ(デフォルトではfs.files)を含めることができます。

私はこれが可能ではないと思います。 fs.filesは独自のコレクションでなければなりません。 また、設計上、この分離が優れています。

+0

こんにちはSamip、あなたの貢献に感謝します。それは今私にとってもっと明らかです。私はユーザーのコレクションを変更して最初の承認を使用します。 – mamkha

関連する問題