【发布时间】:2014-02-10 19:28:32
【问题描述】:
我想用 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 有两个查询获得所有物品?
【问题讨论】: