用对象更新/扩展mongoose文件

我有一个REST API客户端,我发送和接收mongoose文档作为普通的对象,通过JSON序列化。 这些文件不是太复杂,但确实包含embedded对象和数组,如:

var doc = mongoose.Schema({ doc_info: { current: { type: Boolean, required: true, default: true }, edited_by: { type: ObjectId, ref: 'User' }, create_date: { type: Date, required: true, default: Date.now() }, save_date: { type: Date, required: true, default: Date.now() }, prev_versions: [{type: ObjectId, ref: 'DOC'}] }, ix_info: { runid: { type: String, required: true }, agency_id: {type: Number, required: true}, agency_ref: {type: ObjectId, ref: 'Agency'}, run_times:{ recd: Date } 

} …}

当我从客户端收到一个文档时,它只会是一个部分文档,因为很多东西不会从存储的文档发送到它。 在上面的代码片段中,doc_info部分不会发送到客户端。 当我从客户端收到一个对象时,我需要将文档与更新的对象合并。 从客户端获得的对象中的一切都是在文档的模式中定义的,但它不是一个完整的文档,我不一定知道对象中的文档属性是什么,它可以是一个,一个或多个。

我尝试使用_.extend,但是会导致数组或嵌套对象中的任何属性,而不是从文档中删除接收的对象。 在上面的示例模式中,当使用_.extend(doc, newObj)时,pcr_info.prev_versions被删除。 有没有办法盲目扩展我的文档与对象,而不删除东西不在源对象? 这是否被认为是“深度合并”或“深层复制”的问题?