使用MongoDB和Nodejs创建嵌套的子文档/子元素

时间:2019-03-14 10:13:38

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

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

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

为了更好地理解架构图:

我已经通过从一个模式创建单独的模块和CURD数据来创建了Category和Sub Category。

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

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

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

请以更好的动态方式帮助我。谢谢。 :)

1 个答案:

答案 0 :(得分:0)

我们通过使用MongoDB中的嵌入式/嵌套文档方法找到了解决此问题的方法。 我们要做的是找到

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

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);
        });
     })
相关问题