Вам нужны квадратные скобки для динамического построения ключа объекта в JS:
col.updateOne(query, { $set: {['cars.$.'+key]: car[key]} });
Также вместо запуска updateOne
в al oop, который вызывает базу данных несколько раз, вы можете создать один $set
заявление:
let car ={
color: 'blue',
year: 2007,
manufacturer: 'Honda'
}
let set = {};
Object.keys(car).forEach(key => { set['car.' + key] = car[key] });
let update = { $set: set }
console.log(update);
Подробнее о том, как использовать $set
здесь