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

时间:2016-12-06 13:53:13

标签: mongodb

cpp

如何只检索一个级别的密钥?例如。我想只检索root: { dir: { subDir: { subSubDir: { ... }, ... }, subDir_2: { ... } }, dir_2: { ... }, ... } 下的密钥。结果应该包含[dirsubDir,...]而不是其他内容:没有值,没有嵌套键等。最有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为实现目标的唯一方法是使用递归 map-reduce。通过这种方式,您可以处理想要达到的深度。 您必须检查每个深度级别,以查看是否只有一个简单的元素,一个对象或一个数组。此外,性能不会很好,因为map-reduce处理数据的速度很慢,因为它们必须将文档从BSON转换为JSON并返回工作。 我使用这种方法为mongoDB构建模式分析器。如果你想看一下,这是the link 也许你可以在分片集群中使用map-reduce,但它最好是Hadoop!或Elasticsearch以获得更高效的性能。