Обновление и удаление вложенного вложенного документа
"_id": {
"$oid": "577cc50d10b5a6c42b26f414"
},
"firstName": "new",
"lastName": "new",
"__v": 0,
"A": [
{
"AfirstName": "AfirstName",
"AlastName": "AlastName",
"_id": {
"$oid": "577dbef2f2c9f5901f402efe"
},
"AB": [
{
"AB1firstName": "AB1firstName",
"AB1lastName": "AB1lastName",
"_id": {
"$oid": "577dd3b1495663ec2a6ca456"
}
},
{
"AB2firstName": "AB2firstName",
"AB2lastName": "AB2lastName",
"_id": {
"$oid": "577dd3bc495663ec2a6ca45a"
}
}
]
}
]
Example.update({ _id: , A._id: , A.AB._id: } ,
{"$set": {"A.$.AB": data}},
function(err,model){ console.log(model); if (err) throw err; })
Это просто обновит первые данные AB. Я хочу обновить данные субдока AB с помощью _id, а также удалить конкретный вложенный субдок с помощью _id
2 ответа
Example.findById(_id,function(err,doc){
var result = doc.A.id(AId).AB.id(AB.ABId);
result.AB1firstName="first Name";
result.AB1lastName= "Last Name";
doc.save();
});
Это обновит
Каждый документ имеет _id. DocumentArrays имеет специальный метод id для поиска документа по его _id.
Example.findOne({ _id: id, A._id: Aid, A.AB._id: ABid},
function(err,model){
if (err) throw err;
var ABDoc model.A.id(Aid).AB.id(ABid);
ABDoc.AB2firstName="new value";
ABDoc.AB2lastName="new value";
model.save();
})