【问题标题】:How to make parent child schema in mongo db and retrive the data如何在 mongodb 中创建父子模式并检索数据
【发布时间】:2021-01-04 12:22:27
【问题描述】:

需要帮助设计和从 MongoDB 获取数据,需要创建一个类别模式,其中每个类别可以有多个子类别,每个子类别可以有更多的子类别等等,所以如果我在 MySQL 中设计了然后我可以像下面这样设计它

category table
id name parent_id

所以你可以看到 parent_id 将是类别 id 的主键等等,无论有多少孩子都可以在其中处理,但我不知道如何在 mongo 模式中做到这一点,因为我我在这个数据库中是新的,在制作架构后,我如何获取有孩子和孩子的类别。

【问题讨论】:

    标签: mysql node.js mongodb parent-child


    【解决方案1】:

    有多种方法可以实现这一点,但如果您想使用嵌入,则最好保持简单,如果您的类别文档具有有限的子项和子项。

    {
        _id: ObjectId("507f1f77bcf86cd799439011"),
        name: 'adsfa',
        childCategories: [
          {
              _id: ObjectId("507f1f77bcf86cd799439012"),
              name: 'asefda',
              childCategories: [
                 {
                    _id: ObjectId("507f1f77bcf86cd799439013"),
                    name: 'afsd',
                 },
              ],
          },
        ],
    }
    

    至于查询数据,您只需查询父文档_id,它将返回包含子类别和所有子子类别的整个文档。请注意,如果您的子类别和子类别预计会继续增加,那么此模式可能并不总是对您有好处。在这种情况下,您可以考虑重塑模式以利用引用。以下是此类场景的示例

    {
        _id: ObjectId("507f1f77bcf86cd799439011"),
        name: 'Parent or child category name',
        parent: ObjectId("507f1f77bcf86cd799439012"),
    }
    

    在这种情况下,您必须使用查找或填充来填充您父母的数据。但这完全取决于您的用例。因此,我建议您阅读一些有关如何构建文档数据库以及每种方法的优缺点的信息。

    【讨论】:

    • 如果我想获取它的一个子类别,就像在你的例子中那样,如果我必须与那里的孩子一起获取类别 asefda 怎么办?
    • 因此父类别的子子和子子子也有 mongo 对象 id,即_id,您可以使用它来搜索嵌套的子。我已经编辑了我的答案给你一个清晰的想法
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2020-11-21
    • 2019-08-04
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多