mongodb - 以树状结构聚合文档

标签 mongodb aggregation-framework

我有一个 mongo 集合,其中包含如下文档:

{
  area: "Some area",
  group: "group name", // area includes different groups
  name: "name" // there are many names in each group
}

对于前端,我需要一个树状结构:

{ _id: "area name",
  name: "same as _id",
  ap: {
    children: [
      { name: "group name, children: [ { name: "name from the doc" } ] }, 
      ...
    ]
  }
}

我感兴趣的是使用聚合框架执行此操作有多难,或者是否可以这样做?或者更好地在客户端计算这个?

最佳答案

虽然可能需要付出大量努力(以及非常冗长的管道)才能让当前的聚合框架输出类似的结构,但它并不简单或合适。聚合框架旨在聚合文档并生成摘要、组等。虽然它可以进行数据投影,但如果您需要结果中的多个字段,您会发现它很麻烦。

目前框架的局限性也值得一看here . 2.4 的结果总计不能超过 16MB。

我建议您在客户端构建结构。它将数据库从繁忙的工作中解放出来,并将工作分配给客户端。如果它是一个大型结构,您无论如何都应该考虑缓存结果。

关于mongodb - 以树状结构聚合文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19024082/

相关文章:

mongodb - 聚合父文档中的嵌套文档

java - 使用模拟更新列表时出现 StackOverflowError

node.js - Mongoose 类型错误 : Object {} has no method 'cast'

mongodb - Mongo Aggregation 删除一个 id 的所有记录,只保留最旧的记录

mongodb - Mongodb 多个 $lookup 和 $group 聚合

javascript - Mongodb 聚合管道新日期

php - MongoDB 组数组值是否存在检查

python - 从另一台机器访问digitalocean服务器上的mongodb

node.js - 从MongoDB中的数组中获取随机元素

mongodb - 查找聚合性能差