如何传递在MongoDB查询中连接的变量?

问题描述 投票:1回答:1

下面的'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]});
});
javascript mongodb mongoose mongodb-query concatenation
1个回答
1
投票

您需要方括号以在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的更多信息>

© www.soinside.com 2019 - 2024. All rights reserved.