GridFS集合:如何获取所有上载文件的总大小?

时间:2019-07-04 08:50:27

标签: javascript node.js mongodb meteor gridfs

我们有一个流星/节点应用程序(wekan fork)和一个基础的mongodb。 要存储文件,我们使用GridFS。

我知道在上载文档时文件集合中的元数据中会将该文档的大小存储为length属性(如果我错了,请纠正我)。

所以我想知道是否还有一种方法可以获取所有文件的完整大小,而无需手动解析(添加)它们?

2 个答案:

答案 0 :(得分:1)

GridFS中的所有文件都存储在fs.filesfs.chunks中,其中chunk has a default size of 255KB

因此,您可以通过计算来获得整个KB大小

fs.chunks.find().count() * 255

请注意,这假设您使用默认的db.fs作为GridFS存储桶和默认的块大小。

在Meteor中,您可以像其他所有集合一样获得Grid集合:

const FsChunks = new Mongo.Collection('fs.chunks')

编辑:此方法有些不精确,因为

  

最后一块只有必要的大小。同样,不大于块大小的文件只有最后一块,只使用所需的空间以及一些其他元数据。

因此,随着文件数量的增加,您将获得比实际大小大得多的结果。如果您有几个但很大的文件,这不会有太大问题。

但是,其他方法仍然需要described wellaggregate或手动遍历fs.files并将其总结为length属性。

答案 1 :(得分:1)

最好使用

获取集合的存储大小
db.fs.chunks.stats()

从输出中获取存储空间。