1

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

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

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.
}
4

1 回答 1

2

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

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

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

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

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

于 2012-08-28T09:25:56.187 回答