MongoDB:如何在没有子项的情况下找到特定深度/嵌套

MongoDB:如何在没有子项的情况下找到特定深度/嵌套,mongodb,Mongodb,如何仅检索单个级别的密钥?例如,我只想检索dir下的键。结果应该包含[subDir,subDir\u 2,…],并且没有其他内容:没有值,没有嵌套键等。最有效的方法是什么?我认为实现目标的唯一方法是使用递归映射减少。通过这种方式,您可以处理您想要达到的深度。 您必须检查每个深度级别,以查看是否只有一个简单元素、一个对象或一个数组。此外,性能也不会很好,因为map reduce处理数据的速度很慢,因为它们必须将文档从BSON转换为JSON并返回工作状态。 我使用这种方法为mongoDB构建了一个模

如何仅检索单个级别的密钥?例如,我只想检索
dir
下的键。结果应该包含[
subDir
subDir\u 2
,…],并且没有其他内容:没有值,没有嵌套键等。最有效的方法是什么?

我认为实现目标的唯一方法是使用递归映射减少。通过这种方式,您可以处理您想要达到的深度。 您必须检查每个深度级别,以查看是否只有一个简单元素、一个对象或一个数组。此外,性能也不会很好,因为map reduce处理数据的速度很慢,因为它们必须将文档从BSON转换为JSON并返回工作状态。 我使用这种方法为mongoDB构建了一个模式分析器。如果您想看一看,请看这里。

也许你可以在分片集群中使用MapReduce,但它比Hadoop更好!或Elasticsearch以获得更高效的性能

您知道每个文档的结构吗?或者您正在搜索的密钥可以是任何深度的?@NenadVracar在每个特定时刻,我都会知道我要搜索的确切位置。我会知道确切的节点和路径直到这个节点。我需要的只是其中的键,而不是更深的键。您可以检索所有具有
root.dir
结构的结果,然后使用
Object.keys()
,只返回
root.dir
(code-in)的键,但我认为这不是您想要的。我想你要找的是,但我不确定。@NenadVracar,如果我在root.dir中有几个大字节的数据呢?如果更多呢?其中的数据将比密钥的大小大数千倍,甚至数百万倍。
root: {
  dir: {
    subDir: {
      subSubDir: {
        ...
      },
      ...
    },
    subDir_2: {
      ...
    }
  },
  dir_2: {
    ...
  },
  ...
}