下面的'cars.$.'+item
串联在MongoDB查询中不起作用。循环应查询'cars.color'
,'cars.year'
,'cars.manufacturer'
您如何编写它以使其正常循环?
let car ={
color: 'blue',
year: 2007,
manufacturer: 'Honda'
}
Object.keys(car).forEach(key => {
col.updateOne({'cars.$.'+key: car[key]});
});
您需要方括号以在JS中动态构建对象键:
col.updateOne(query, { $set: {['cars.$.'+key]: car[key]} });
也不必在多次调用数据库的循环中运行updateOne
,您可以构建一个$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
here的更多信息>