我在stackoverflow上看到了很多例子,但没有一个对我有用。可能是我的结构错了吗?
我需要使用 Mongoose 将新记录插入到嵌套文档中(我想在数组中添加"historial"
)。如果文档已经存在,我只需要更新它,如果它不存在,我必须添加一个新文档。我有以下架构:
let equipo_json = {
codigo: String,
controles: [{
_id: con.Schema.Types.ObjectId,
nombre: String,
historial: [{
_id: con.Schema.Types.ObjectId,
nuevo: Boolean,
}]
}]
};
let equipo_schema = new con.Schema(equipo_json);
let Equipo = con.mongoose.model('Equipo', equipo_schema);
此代码应执行更新:
Equipo.update({
'_id': objeto_equipo.id_equipo,
'controles._id': objeto_equipo.id_tipo_control
},{
$set: {
'controles.$.historial.$': {
nuevo: true
}
}
},
{
upsert: true, setDefaultsOnInsert: true
},
function (err, doc ) {
console.log( doc );
})
在使用之前,update()
我曾经find()
检查它是否根据条件找到并返回整个文档,但是,当我想使用它时,update()
它根本不会将"controles"
字段添加"nuevo"
为"true"
. 我尝试了$set
和$push
。
我找到了我的问题的解决方案,我分享它以防其他人遇到同样的问题。您只需要修改这部分代码: