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

Node.js 如何使用Mongoose和NodeJS在MongoDB中保存嵌套数组,node.js,mongodb,mongoose-schema,Node.js,Mongodb,Mongoose Schema,有人能解释一下如何使用mongoose和nodejs将嵌套数组项保存到mongodb中吗 下面是我正在使用的模式 var demoSchema = ({ "r_id": Number, "r_label": String, "entity": [{ "d_label": String, "d_type": String } ] }) 下面是我用来将数据保存到数据库中的Nodejs函数 app.route("/mypa

有人能解释一下如何使用mongoose和nodejs将嵌套数组项保存到mongodb中吗

下面是我正在使用的模式

var demoSchema = ({
    "r_id": Number,
    "r_label": String,
    "entity": [{
        "d_label": String,
        "d_type": String
      }
    ]
})
下面是我用来将数据保存到数据库中的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);
     }
 });

使用数组设置实体
[]

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_type
d_type
添加到实体数组中,如果它们在数组中不存在,则不会添加它们

看看这个答案


使用数组设置实体
[]

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_type
d_type
添加到实体数组中,如果它们在数组中不存在,则不会添加它们

看看这个答案


您能帮我找到更新相同模式的方法吗?。假设我已经有了一个d_标签和d_类型,我需要再更新一个条目。是的,您必须使用
$addToset
,我是否要更新我的答案并为
$addToset
添加另一个方法?是的,它将有用您是要向实体添加新对象还是只执行更新,我的意思是将添加更多实体{}在arrayI中使用d_标签和d_类型将只添加更多实体。您能否帮助找到更新相同架构的方法?。假设我已经有了一个d_标签和d_类型,我需要再更新一个条目。是的,您必须使用
$addToset
,我是否要更新我的答案并为
$addToset
添加另一个方法?是的,它将有用您是要向实体添加新对象还是只执行更新,我的意思是将添加更多实体{}在arrayI中使用d_标签和d_类型将只添加更多实体。