Mongoose findByIdAndUpdate удаляет не обновленные свойства
у меня есть следующая модель Мангуста:
var mongoose = require('mongoose');
var userSchema = mongoose.Schema({
facebook: {
name: String,
email: String,
customerId: String
}
});
var User = mongoose.model('User', userSchema);
когда я обновляю часть этого документа, используя findByIdAndUpdate
User.findByIdAndUpdate(id, {
$set: {
facebook: {
name: name
}
}
});
name
обновляется, в то время как email
и customerId
удалить (сбросить?).
Я не нашел это документально.
есть ли способ, чтобы обновить только определенные свойства документа с findByIdAndUpdate
?
1 ответов
FindByIdAndUpdate фактически выдает команду обновления mongodb findAndModify по идентификатору документов.
дело в том, что вы устанавливаете объект для перезаписи старого объекта. если вы хотите обновить поле, вам необходимо изменить объект обновления.
User.findByIdAndUpdate(id, {
$set: {
'facebook.name':name
}
});
это обновит только поле имени, сохраняя объект rest в предыдущем.