【问题标题】:Push in subarray with Mongoose使用 Mongoose 推入子数组
【发布时间】:2013-10-19 07:32:35
【问题描述】:

我有一个具有三个深度级别的数据模型。

var job = mongoose.Schema({
        id:Number,
        jobName:String    
    });

var demo = mongoose.Schema({

            id:Number,
            demoName:String,
            job:[job]
    });

var ExerciseSchema = mongoose.Schema({

            id:Number,
            name:String,
            area:String,
            medicalObj:[demo]   
    });

var Exercise = mongoose.model('Exercise', ExerciseSchema);

我想将新对象推送到第二个嵌套数组中

我正在尝试这种方式但不起作用:

    Exercise.update({'area':area},{$push:{"medicalObj.job":{jobName:'Andrea'}}},{upsert:true},function(err){

        if(err){
                console.log("ERROR" + err);
        }else{
                console.log("Successfully");

        }
  });

【问题讨论】:

  • {'area':area}{area:'area'}?你有什么错误?
  • 相同的函数在第二级数组中起作用。但是我没有错误,但只是不工作。 Exercise.update({'area':area},{$push:{medicalObj:{a:'Andrea'}}},{upsert:true},function(err){ if(err){ console.log("ERROR" + err); }else{ console.log("Successfully added"); } });

标签: javascript json node.js mongodb mongoose


【解决方案1】:

我想说明一件事:medicalObj 将是一个对象数组。我认为您可能希望将 jobName: andrea 添加到包含在作业中的特定数组中,所以这就是我在测试中所做的:

Exercise.findOne({area: area}, function(e,r){
  r.medicalObj.forEach(function(demo){
    // the following line looks for the specific array to add jobName Andrea to.
    if (demo.demoName == "test") {
      demo.job.push({jobName: "Andrea"});
      r.save(function(err, res){
        console.log(err, res);
      });
  });
});

如果您只想插入 jobName: "Andrea" (如果它不存在),您可以轻松地添加如下检查:

Exercise.findOne({area: area}, function(e,r){
  r.medicalObj.forEach(function(demo){
    if (demo.demoName == "test") {
      var found = false;
      demo.job.forEach(function(jobs){
        if (jobs.jobName == "Andrea") found == true;
      });
      if (found == false) {
        demo.job.push({jobName: "Andrea"});
        r.save(function(err, res){
          console.log(err, res);
        });
      };
    };
  });
});      

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 2021-10-11
    • 1970-01-01
    • 2015-11-14
    • 2018-06-26
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多