mongodb中的二级文档更新

时间:2015-10-12 10:53:57

标签: javascript node.js mongodb mongoose

我想更新一个二级文档,即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);
    }
});

0 个答案:

没有答案