Я пытался обновить значение в массиве, используя Mongoose и таблица, я создал приведена нижеОбновление одного значения массива из с вложенным объекта в Мангусте
var newUser = User({
name : 'XXX',
userName : 'XXX',
password : 'XXX',
admin : true,
location : 'KKK',
studentDeatails : [
{
name : 'AAA',
study : {
dept : 'CSE',
course : 'B.E',
year : 4
}
},
{
name : 'BBB',
study : {
dept : 'EEE',
course : 'B.E',
year : 3
}
}
],
createdAt: Date(),
updatedAt: Date()
});
Результата:
[ { _id: 57c42dd22842e7561e8b9612,
name: 'XXX',
userName: 'XXX',
password: 'XXX',
admin: true,
location: 'KKK',
createdAt: 2016-08-29T12:42:58.000Z,
updatedAt: 2016-08-29T12:42:58.000Z,
studentDeatails: [ { name: 'AAA',
_id: 57c42dd22842e7561e8b9614,
study: { dept: 'CSE', course: 'B.E', year: 4 } },
{ name: 'BBB',
_id: 57c42dd22842e7561e8b9613,
study: { dept: 'EEE', course: 'B.E', year: 3 } } ] } ]
Я пытался обновить значение отдела: 'EEE' -> dept: 'MECH'
Мой ожидаемый ответ должен быть:
[ { _id: 57c42dd22842e7561e8b9612,
name: 'XXX',
userName: 'XXX',
password: 'XXX',
admin: true,
location: 'KKK',
createdAt: 2016-08-29T12:42:58.000Z,
updatedAt: 2016-08-29T12:42:58.000Z,
studentDeatails: [ { name: 'AAA',
_id: 57c42dd22842e7561e8b9614,
study: { dept: 'CSE', course: 'B.E', year: 4 } },
{ name: 'BBB',
_id: 57c42dd22842e7561e8b9613,
study: { dept: 'MECH', course: 'B.E', year: 3 } } ] } ]
Код я попытался это:
User.findOneAndUpdate(
{ name: 'XXX', 'studentDeatails.study.year': 3 },
{ "$set": { 'studentDeatails.0.study.$.dept' : 'MECH' } },
function(err){
if(err){
console.log(err);
} else {
console.log("Successfully Updated");
}
}
);
Исправьте то, что я сделал неправильно, используя Mongoose, это будет большим подспорьем!
Спасибо, что это сработало отлично! @chridam – sunilsmith