node.js - 在 Mongoose 中填充嵌套数组

如何在示例文档中填充“组件”:

  {
    "__v": 1,
    "_id": "5252875356f64d6d28000001",
    "pages": [
      {
        "__v": 1,
        "_id": "5252875a56f64d6d28000002",
        "page": {
          "components": [
            "525287a01877a68528000001"
          ]
        }
      }
    ],
    "author": "Book Author",
    "title": "Book Title"
  }

这是我的 JS,我通过 Mongoose 获取文档:

  Project.findById(id).populate('pages').exec(function(err, project) {
    res.json(project);
  });

最佳答案

Mongoose 4.5 支持这个

Project.find(query)
  .populate({ 
     path: 'pages',
     populate: {
       path: 'components',
       model: 'Component'
     } 
  })
  .exec(function(err, docs) {});

而且您可以加入多个深层。

编辑 2021 年 3 月 17 日:这是库的实现,它在幕后所做的是进行另一个查询来为您获取内容,然后加入内存。虽然这项工作我们真的不应该依赖。它将使您的数据库设计看起来像 SQL 表。这是昂贵的操作并且不能很好地扩展。请尝试设计您的文档以减少连接。

https://stackoverflow.com/questions/19222520/

相关文章:

javascript - 在 Mongoose 中引用另一个模式

mongodb - 什么是 Mongoose 错误 Cast to ObjectId failed

ruby-on-rails - Mongodb:使用前需要了解什么?

mongodb - 如何查看 mongodb 从 mongo shell 监听的端口?

javascript - Mongoose,使用查找选择特定字段

windows - MongoDB 新手无法运行命令 mongo

mongodb - 如何从 Mac OS 终端连接到远程 mongo 服务器

mongodb - 如何使用 Robo 3T 从 MongoDB 导出 JSON

mongodb - Meteor 有哪些安全机制?

javascript - 如何跨 NodeJs 应用程序和模块正确重用与 Mongodb 的连接