我想更新一个二级文档,即current_data数组对象,我遵循以下信息,但我无法通过节点mongoose更新更新,但我可以在mongo shell中执行查询。 架构是:
canvas : {
current_data : [{
product_id : { type : String, required : true },
item_id : { type : String, required : true },
image_id : { type : String, required : true },
created_by : { type : String, required : true },
controller : { type : String },
dimension: { height : { type : Number, required : true }, width : { type : Number, required : true } },
position : { x : { type : Number, required : true }, y : { type : Number, required : true } },
angle : { type : Number, required : true },
depth : { type : Number, required : true },
created_at : { type : Date, required: true, default: Date.now() },
updated_at : { type : Date },
deleted_at : { type : Boolean, required : true, default : 0 }
}]
}
查询:
我将product._id转换为ObjectId然后我正在触发查询
model.findOneAndUpdate( { _id : chatId , 'canvas.current_data' :{ $elemMatch:{_id : product._id } } },{ $set:{'canvas.current_data.$': product } },{safe:true,new:true}, function(err, result) {
if (err) {
console.log('error result is ',err);
return cb(false, [err.errors],null);
} else {
console.log(result);
}
});