2012-05-26 34 views
1

我想在MongoDB中实现一个像集合这样的次要文件系统。在MongoDB集合中查找一个字符串

所以说,我的目标是这样的

{ 
    "\":{ 
     'autoexec.bat':{ 
      name:'autoexec', 
      filetype:'bat', 
      size:1302 
    }, 

    'users':{ /* its own tree */ }, 
    'windows':{ 
     'system':{ 
      'autoexec.bat':{ 
       name:'autoexec', 
       filetype:'bat', 
       size:1302123 
      } 
     } 
    } 
} 

我想知道如何找到最effiecient方式“AUTOEXEC.BAT”一词,而且对文件树是有执行什么更好的办法在Node.js或C++中是一样的吗?我希望实现搜索等功能。

回答

2

我会说:不要在一个巨大的文档中做到这一点。让每个文件成为一个集合中的自己的文档,并引用父代和(可能)子代。几乎所有的操作现在都是微不足道的。您只需考虑有效的方式来读取/删除整个树。

+0

读取/删除整棵树将被删除的第一个元素和繁荣其余的走了,但仍然..如何找到文件?有没有可能的方法? – ShrekOverflow

+0

没有繁荣。其余的将成为孤儿(当每个文件是一个单独的文件)。 –

+0

嗯,哦,是的!我在想方式太javascript了.. – ShrekOverflow

0

上周在MongoNYC Kyle Banker举了一个关于模式设计的好例子talk。我认为你的问题与他的音乐体裁层次的第一个例子非常相似。

实际上,每个文件在集合中都有一个文档。它会有一个父字段来标识它的直接父(它是你的情况下的目录)和它的所有祖先的数组。

,现在变得容易的查询是 - 哪个目录是 文件“AUTOEXEC.BAT” - 列出目录“foo”的所有文件 - 列表目录FOO递归的所有文件(与“富”的所有文件它的祖先

不要忘记,你也可以选择将完整路径名保存到文件/目录以及其基本名称,如果字段被索引,允许通过路径的前导部分进行搜索。它不仅仅是文件名,它也将是唯一的。

一如既往,关键信息是您需要查询此集合的所有方式以及性能和负载预期。如果没有这一点,可以很容易地选择一个模式,以后会给你一些挑战。

相关问题