【问题标题】:Create Nested Sub documents/Sub Elements Using MongoDB and Nodejs使用 MongoDB 和 Nodejs 创建嵌套的子文档/子元素
【发布时间】:2019-08-05 04:36:00
【问题描述】:

我被困在这里。基本上,要求是在一个模式中创建一个具有 4 级子类别的类别。应该是这个方法

Category
|
--Sub Category 
  |
  ---Sub Sub-Category(Sub Category Level 1)
     |
     --------Sub Category Level 2
             |
             ------Sub Category Level 3
                   |
                    ------------ Sub Category Level 4

模式结构的图像以便更好地理解:

我通过从一个架构创建单独的模块和 CURD 数据来创建类别和子类别。

我有为子子类别创建另一个页面的方法。但我认为进一步它可能会变得复杂。如果有人有更好的方法,请帮助我解决我面临的问题。这是来自 ROBOT 3T 的数据图像

我的 Robo 3T 数据类别插入示例:

我的 Robo 3T 数据子类别插入示例:

请帮助我采用更好的动态方法。谢谢你。 :)

【问题讨论】:

  • 子类别的架构是什么样的?它们有何不同?
  • 感谢您的评论 :)... 每个类别级别都应该有单独的详细信息,例如名称标题描述以及更多信息(如果需要)...
  • 但是所有这些子类别是否共享相同的架构设计?为什么要为每个子类别创建单独的模块?
  • 您可以只在每个子类别中引用父类别 ID,而不是嵌套每个类别。这样,也可以很容易地分离每个类别并单独使用它们
  • 是的,按照我们当前的方法,所有子类别共享相同的架构。因为每个子类别都包含有元信息。根据用户(将要使用的人)的观点,这对他们来说应该很复杂。所以我们正在考虑使用一个架构的单独模块

标签: javascript node.js mongodb mongoose mongodb-query


【解决方案1】:

我们通过在 MongoDB 中使用嵌入式/嵌套文档方法找到了解决此问题的方法。 我们习惯做的就是当我们发现时

我为类别和子类别创建了两个模块。 对于category,我曾经创建过函数。

return new Promise(function (resolve, reject) {
let params= JSON.parse(JSON.Stringify(req.body))
categoryModel
        .create(params)
        .then(success => {
           var data = {
              status: 200,
              message: "Record save successfully ",
              data: success
           };
           resolve(data);
        })
        .catch(err => {
           reject(err);
        });
      })

对于子类别,我通过获取类别的 id 来使用更新功能(这取决于您如何操作,但获取 id 进行更新很重要)。

return new Promise(function (resolve, reject) {
let id = req.body.id;
let params = re

  categoryModel.update({ _id: id}, 
  { $set: { "sub_category.$.name": "sub_category1", 
          "sub_category.$.type": "video" } })
   .then(success => {
           var data = {
              status: 200,
              message: "Record save successfully ",
              data: success
           };
           resolve(data);
        })
        .catch(err => {
           reject(err);
        });
     })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-25
    • 2019-01-19
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    相关资源
    最近更新 更多