在MongoDB集合中find一个string

我想在MongoDB中实现一个小的文件系统,比如集合。

所以说我的对象是这样的

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

我想知道如何以最有效的方式find术语“autoexec.bat”。进一步的文件树是否有更好的方法来实现在Node.js或C + +? 我希望实现search等function

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

上周在MongoNYC上,凯尔·布莱克(Kyle Banker)通过实例给出了一个关于模式devise的好话题 。 我认为你的问题与他的第一个音乐体裁层次的例子非常相似。

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

现在变得简单的查询是 – 什么目录是文件“autoexec.bat” – 列出目录“foo”中的所有文件 – 在目录foo中recursion地列出所有文件(在其祖先中具有“foo”的所有文件。

别忘了,你还可以select将完整的path名保存到一个文件/目录以及它的基本名称。 如果字段被索引,这允许通过path的前导部分进行search。 这不仅仅是文件名,它也将是唯一的。

与往常一样,关键信息是您需要查询此集合以及性能和负载预期的所有方法。 如果没有这个,那么select一个能够给你一些挑战的模式是很容易的。