Лучшее решение состоит в том, чтобы извлечь свойства из объекта и сделать их парами ключ-значение с точечной точкой. Вы можете использовать, например, эту библиотеку:
https://www.npmjs.com/package/mongo-dot-notation
Он имеет .flatten
, которая позволяет изменять объект в плоский набор свойств, который затем может быть задан модификатору $ set, не опасаясь, что любое свойство вашего существующего объекта БД будет удалено / перезаписано без необходимости.
mongo-dot-notation
docs:
var person = {
firstName: 'John',
lastName: 'Doe',
address: {
city: 'NY',
street: 'Eighth Avenu',
number: 123
}
};
var instructions = dot.flatten(person)
console.log(instructions);
/*
{
$set: {
'firstName': 'John',
'lastName': 'Doe',
'address.city': 'NY',
'address.street': 'Eighth Avenu',
'address.number': 123
}
}
*/
И затем он формирует идеальный селектор - он обновит ТОЛЬКО заданные свойства. EDIT: Мне нравится быть археологом несколько раз;)