繁体   English   中英

如何使用Mongoose和NodeJS在MongoDB中保存嵌套数组

[英]How to save nested array in MongoDB using Mongoose and NodeJS

任何人都可以解释我如何使用mongoose和nodejs将嵌套数组项保存到mongodb中。

这是我正在使用的架构。

var demoSchema = ({
    "r_id": Number,
    "r_label": String,
    "entity": [{
        "d_label": String,
        "d_type": String
      }
    ]
})

这里是我用来将数据保存到db中的Nodejs函数

 app.route("/mypages/rooms")
  .post(function(req, res) {
   var db = mongoOp.demo();
   var response = {};
   req.checkBody("r_id", "Enter a valid r_id address.").notEmpty();
   req.checkBody("r_label", "Enter a valid label address.").notEmpty();

   var errors = req.validationErrors();
   if (errors) {
     console.log(errors);
     console.log(req.body);
     res.status(500);
     res.end('500 Server Error');
     //res.render('addrooms',{flag:1});
     return;
     } else {
         db.r_id = req.body.r_id;
         db.r_label = req.body.r_label;
         db.entity = req.body.entity;
         db.save(function(err) {
          if (err) {
           findfromdb(req, res, 2); //own function for implementation purpose
          } else {
           findfromdb(req, res, 1);
          }
        });
        //var middleVar = req.body.resources;
      //  console.log(middleVar[0].d_rgb);
     }
 });

使用array []设置实体

db.entity = [{}];

app.route("/mypages/rooms")
  .post(function(req, res) {
   var db = mongoOp.demo();
   var response = {};
   req.checkBody("r_id", "Enter a valid r_id address.").notEmpty();
   req.checkBody("r_label", "Enter a valid label address.").notEmpty();

   var errors = req.validationErrors();
   if (errors) {
     console.log(errors);
     console.log(req.body);
     res.status(500);
     res.end('500 Server Error');
     //res.render('addrooms',{flag:1});
     return;
     } else {
         db.r_id = req.body.r_id;
         db.r_label = req.body.r_label;
         db.entity = [{
                      "d_label": req.body.label_type,
                      "d_type": req.body.d_type
                     }];
         db.save(function(err) {
          if (err) {
           findfromdb(req, res, 2); //own function for implementation purpose
          } else {
           findfromdb(req, res, 1);
          }
        });
        //var middleVar = req.body.resources;
      //  console.log(middleVar[0].d_rgb);
     }
 });

如果数组中不存在元素label_typed_type ,则将其添加到实体数组中,如果它们存在,则不会添加它们

https://docs.mongodb.com/manual/reference/operator/update/addToSet/

Model.update(
    query, //  { _id: 1 }
    {
        $addToSet: {
            "enity": {
                "d_label": req.body.label_type,
                "d_type": req.body.d_type
            }
        }
    }
)

看看这个答案

将项目推送到Mongodb集合数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM