我不完全确定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.
}
答案 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。