c#mongodb文件中的大文件

时间:2012-08-27 20:12:13

标签: c# mongodb gridfs

我不完全确定GridFS如何在MongoDB中运行。我目前看到的所有示例都涉及抓取文件并通过api将其上传到数据库,但我想知道

a)您可以在典型的JSON样式文档中嵌入大型文件,还是必须将它们存储在自己的特殊GridFS集合或db中?

b)我如何处理这种情况,其中我有一个对象,其中包含一些典型字段,字符串整数等,但也有一组附件文件,可以是从小的txt文件到相当大的视频文件?

例如

class bug
{
    public int Id { get; protected set; }
    public string Name { get; protected set; }
    public string Description { get; protected set; }
    public string StackTrace { get; protected set; }
    public List<File> Attachments { get; protected set; } //pictures/videos of the bug in action or text files with user config data in it etc.
}

1 个答案:

答案 0 :(得分:2)

  

a)您可以在典型的JSON样式中嵌入大文件吗?   文件或他们必须存储在他们自己的特殊GridFS中   收集或db?

如果文件大小超过16mb的mongodb文档大小限制,则可以。但是你需要序列化/反序列化并自己做另外一项工作。

  

b)如何处理这种具有对象的情况   它有一些典型的字段,字符串ints等,但也有一个   附件文件的集合,可以是小txt的任何东西   文件到相当大的视频文件?

如果您最终决定将附件存储在mongodb中,那么最好使用gridfs。您可以在gridfs中简单地存储文件,但是在此文件的Attachments集合存储ID和任何元数据(文件名,大小等)中。然后,您可以通过内部附件集合中的id轻松获取文件内容。

Mongodb gridf是mongodb上面的一个简单层,它可以将大文件分成块并将它们存储在mongodb中,也可以从块中读取文件。要开始使用c#和gridfs,请阅读this answer。