mongodb - 将文件夹存储在 fs.files 集合中

标签 mongodb gridfs

我想用 GridFS 创建一个虚拟文件系统。

实际上,我正在考虑使用文件夹对象从 GridFS 扩展 fs.files 集合。

文件夹架构如下:

var folder = {
    _id: new ObjectID(),
    name: "Folder1",
    metadata: {
        type: "Folder",
        parentId: ObjectID("xxxxxxxxx")
    }
};

并通过 parentId 获取所有文件和文件夹,这将是一个 ObjectID 并存储在同一个集合中:

function getFilesAndFolders(parentId) {
    var items = db.fs.files.find({ "metadata.parentId": parentId });

    items.forEach(function (item) {
        switch (item.metadata.type) {
            case "Folder":
                // Do something with the folder
                break;
            case "File":
                // Do something with the file
                break;
            default: break;
        }
    });

    return items;
}

使用不同的对象扩展 db.fs.files 集合是一个好习惯,或者创建单独的集合(例如 db.fs.folders)更好,但对 fs.files 和 fs.folders 有两个查询获得所有元素?

最佳答案

有一些使用标准 GridFS 实现的方法可能对您的虚拟文件夹概念有所帮助:

  1. 您可以将“虚拟文件夹”路径的值保存在 GridFS files 中。元数据。假设你想实现一个嵌套的文件夹层次结构,阅读 MongoDB 数据模型文档会很有用,其中包含 Model Tree Structures 的常见模式。 .

  2. GridFS有“桶”或命名空间的概念。默认命名空间是 fs,但您可以为每个“虚拟文件夹”或相对扁平的内容类型使用不同的命名空间。

关于mongodb - 将文件夹存储在 fs.files 集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254138/

相关文章:

php - 在浏览器上显示保存在 gridfs 中的 pdf 文件的预览

java - 使用 java 驱动程序为 GridFS 自定义 _id

node.js - TypeError : Grid is not a constructor. Mongodb Node 驱动

node.js - Nodejs 在创建一天后检查并更新数据库字段

ruby - 使用 rails 和 mongodb 重新索引 solr 时出错

node.js - Mongoose findOne 与排序

python - 聚合 QuerySet 以获得 FileFields 大小的总和

mongodb - 读取0字节后读取超时,在mongodb中等待了30.000000秒

mongodb - 来自grails/groovy的mongodb通配符查询

java - Spring Data MongoDB - 将二进制数据附加到现有的 GridFS 文件