Javascript 带猫鼬的推入子阵
我有一个三层深度的数据模型Javascript 带猫鼬的推入子阵,javascript,json,node.js,mongodb,mongoose,Javascript,Json,Node.js,Mongodb,Mongoose,我有一个三层深度的数据模型 var job = mongoose.Schema({ id:Number, jobName:String }); var demo = mongoose.Schema({ id:Number, demoName:String, job:[job] }); var ExerciseSchema = mongoose.Schema({
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");
}
});
我要注意的一点是:medicalObj将是一个对象数组。我认为您应该将jobName:andrea添加到包含在job中的特定数组中,所以这就是我在测试中所做的:
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);
});
};
};
});
});
{'area':area}
或{area:'area'}
?您有什么错误?相同的函数在数组的第二级工作。然而,我没有错误,只是不工作<代码>Exercise.update({'area':area},{$push:{medicalObj:{a:'Andrea'}}},{upsert:true},函数(err){if(err){console.log(“ERROR”+err);}else{console.log(“成功添加”);})代码>